szhswl
          宋針還的個人空間

          之前在Part 1簡單介紹了Veiw和JSONView。今天這里小弟為大家說說應用的案例,原本Jack的Image Chooser是一個非常好的案例,當中包含Jack大量的奇技淫巧,不過正因為這樣,過于深奧,小弟我亦不能全盤吃透,只挑其“勃大莖深”之處,與君共勉之!
          本文包含四大知識點:1.在LayoutDialog中加入Tabs;2.View的使用方式;3.JSONView的使用方式;4.獲取XML/JSON的fields值與分頁

          View之定義
            A View is generally used to build a quick template-based display of datamodel, rather than building a more complex grid. I thnk there's a blog post that illustrates doing this with JSON data. Templates can be used for any repetitious html creation, not necessarily tied to a datamodel.
          主要的意思是View用于展示DataModel的數(shù)據(jù),Part 1已經(jīng)說過。這里是來自fourm某君的補充。

          代碼點評:

          1.先看一段簡單的

          //用yui.ext做翻轉按鈕, super easy(美工最愛!?^^)
          showBtn = getEl('showIntro');
          showBtn.on('click', this.showDialog, this, true);
          showBtn.applyStyles("cursor:pointer");
          showBtn.on('mouseover', function(){showBtn.dom.src='images/over_10.gif'}, this, true);
          showBtn.on('mouseout', function(){showBtn.dom.src='images/btn_10.gif'}, this, true);
          

          //左邊動畫效果,createDelegate()負責輪換效果
          var luo=getEl("left_pic");
          luo.move('right', 250, true, .1, function(){
          luo.dom.src='images/'+who+".gif";
          luo.move('left', 250, true, .15, null, YAHOO.util.Easing.easeOutStrong);
          }.createDelegate(this));
          

          2.在LayoutDialog中加入Tabs

          LayoutDialong分兩個區(qū)域:west & center。而center之中我們要加入tabs,并逐一附加active的事件

          var center = layout.getRegion('center');
          var tab1 = new YAHOO.ext.ContentPanel('luo', {title: '羅老師作品'});
          center.add(tab1);
          center.add(new YAHOO.ext.ContentPanel('chen', {title: '陳老師作品'}));
          
          //center.on('panelactivated',function(){ // alert(center.titleTextEl); //}, this, true); //center.showPanel('center'); /*two ways to activate the tabs.and tabs= many CPs 如果在BasicDialog中,只需要dialog本身就可以獲取getTabs,因為Dialog本身就是 唯一的一個Region; 但在LayoutDialog中,Region是多個的,所有要指明哪個一個Region才行 */
          // stoe a refeence to the tabs 獲取TABS集合 var tabs = layout.getRegion('center').getTabs();//逐一加入事件 tabs.getTab('center').on('activate', function(){this.show_thumb('student')}, this, true); tabs.getTab('luo').on('activate', function(){this.show_thumb('luo')}, this, true); tabs.getTab('chen').on('activate',function(){this.show_thumb('chen')}, this, true); //center.showPanel('chen'); //用Region激活也可以 /*Tips:不能立即激活事件,會點延時,經(jīng)過多行代碼的延時便ok !用addbufferlistener理論上也可以*/ layout.getRegion('center').getTabs().activate('center');

          3.View的使用方式

          //XML:index方式訪問字段;JSON:直接使用字段名
          var tpl = new YAHOO.ext.Template(
          '<div class="thumb">'+
          '<div><img onclick=popupDialog("userfiles/image/'+who+'/{0}",{2},{3}) '+
          ' src=userfiles/image/lite_'+who+'/{0}></div>' +
          '<div>文件大小: {1}</div>'+
          '</div>'
          );
          tpl.compile(); //“編譯DOM”加速
          var schema = {
          tagName: 'row',//Item項
          id: 'id',//ID如不需要時,設置空白字符串,不能取消!
          fields: ['filename','filesize','width','height']//讀取的字段
          };
          var dm = new YAHOO.ext.grid.XMLDataModel(schema);
          var mainView = new YAHOO.ext.View('pic_'+who,
          tpl,
          dm, {
          singleSelect: true,//If JSON,還需指定一個config:jsonRoot
          emptyText : '<div style="padding:10px;">沒有匹配的內容!</div>'
          });
          dm.on('load',function(){}, this, true);
          mainView.on('click', function(vw, index, node, e){
          //alert('Node "' + node[] + '" at index: ' + index + ' was clicked.')
          },this, true);
          mainView.prepareData = function(data){
          // prepare,用于自定義格式
          //如JSON方式直接屬性名訪問,e.g data.sizeString = formatSize(data.size);
          data[1] = formatSize(data[1]);
          return data;
          };
          //用DataModel加載文件,如果是JSONView,這個服務由JSONView本身(UpdateManager)提供
          dm.load('xml.asp?who='+who);
          

          4.JSONView的使用方式

          var dh = YAHOO.ext.DomHelper;
          dh.append(document.body, {tag: 'div', id: 'editUserDialog-user'});
          //XML:index方式訪問字段;JSON:直接使用字段名
          var tpl = new YAHOO.ext.Template('
          
          Username: {username}
          ' + '
          Birthday: {birthday}
          ' + '
          Member Since: {join_date}
          ' + '
          Last Login: {last_login}
          '); tpl.compile(); var mainView = new YAHOO.ext.JsonView('pic', tpl, { singleSelect: true, jsonRoot: 'user', emptyText : '
          No images match the specified filter
          ' }); mainView.load("test.asp", "id=2"); //JSONView特有的異常事件 mainView.on('loadexception', function(){onLoadException()}, this, true); var onLoadException= function(v,o){ alert('Error'); };

          5.獲取XML/JSON的fields值與分頁

          這兩個問題放在一起討論的原因是至今我還不能實現(xiàn)。如果按照jack的辦法:

          mainView.on('click', function(vw, index, node, e){
          alert('Node "' + node.id + '" at index: ' + index + ' was clicked.');
          });
          
          可得到index但node.id無法獲取。我只好用較丑陋的方式實現(xiàn):
          //在Domhelper中“硬”輸出click事件
          var tpl = new YAHOO.ext.Template( 
          '<div class="thumb">'+
          '<div><img onclick=popupDialog("userfiles/image/'+who+'/{0}",{2},{3}) '+
          ' src=userfiles/image/lite_'+who+'/{0}></div>' +
          '<div>文件大小: {1}</div>'+
          '</div>'
          );

          分頁:
          View的分頁視乎應該通過DataModel。


          本文轉自:http://www.ajaxjs.com/yuicn/article.asp?id=20070239

          ---------------------------------------------------------------------------------------------------------------------------------
          說人之短,乃護己之短。夸己之長,乃忌人之長。皆由存心不厚,識量太狹耳。能去此弊,可以進德,可以遠怨。
          http://www.aygfsteel.com/szhswl
          ------------------------------------------------------------------------------------------------------ ----------------- ---------
          posted on 2007-12-08 19:13 宋針還 閱讀(423) 評論(0)  編輯  收藏 所屬分類: EXT
          主站蜘蛛池模板: 冷水江市| 阜南县| 墨脱县| 永新县| 习水县| 兴文县| 彰化市| 永胜县| 郧西县| 南靖县| 健康| 古蔺县| 驻马店市| 义乌市| 仲巴县| 滨海县| 温泉县| 汉源县| 长泰县| 湘潭县| 海淀区| 鄱阳县| 德钦县| 玉龙| 苍南县| 定安县| 吉木萨尔县| 延长县| 滦平县| 兴和县| 长泰县| 盱眙县| 邵阳市| 宁德市| 浙江省| 迁西县| 陇西县| 奉新县| 昔阳县| 黔江区| 右玉县|