<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    菠蘿三國

    大江東去,浪淘盡...
    隨筆 - 34, 文章 - 47, 評論 - 22, 引用 - 0
    數據加載中……

    學習EXT第七日B-View&JSONView 一個畫室網站的案例

    之前在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的數據,Part 1已經說過。這里是來自fourm某君的補充。

    代碼點評:

    1.先看一段簡單的

     

    Title//用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);

     


    Title//左邊動畫效果,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分兩個區域:west & center。而center之中我們要加入tabs,并逐一附加active的事件

       

    Title

    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:不能立即激活事件,會點延時,經過多行代碼的延時便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的使用方式

     

    Title

    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值與分頁

     

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

    TitlemainView.on('click', function(vw, index, node, e){
     alert('Node "' + node.id + '" at index: ' + index + ' was clicked.');
    });

    可得到index但node.id無法獲取。我只好用較丑陋的方式實現:
    Title//在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。但我沒成功過。如知道緣由的朋友懇請告之。

     

    posted on 2007-08-07 14:27 菠蘿 閱讀(473) 評論(0)  編輯  收藏 所屬分類: EXT

    主站蜘蛛池模板: 成人无码a级毛片免费| 亚洲日韩一区二区三区| 一个人免费观看视频在线中文| 成人免费无码大片A毛片抽搐| 亚洲性无码av在线| 亚洲一区免费视频| 亚洲毛片在线免费观看| 2019中文字幕免费电影在线播放| 亚洲国产精品一区二区久久| 久久大香伊焦在人线免费| 久久精品国产亚洲av麻| 69精品免费视频| 亚洲va成无码人在线观看| 最新仑乱免费视频| 亚洲av乱码一区二区三区按摩| 国产一区二区三区免费看| 男女猛烈激情xx00免费视频| 亚洲午夜久久久久久久久电影网| 日韩电影免费在线观看网站| 亚洲av无码片在线播放| 亚洲精品视频免费在线观看| 亚洲已满18点击进入在线观看| 日本一道本高清免费| yellow免费网站| 久久国产精品亚洲综合| 国产精品免费精品自在线观看| 亚洲色少妇熟女11p| 亚洲Aⅴ无码一区二区二三区软件| 中国videos性高清免费| 久久亚洲日韩看片无码| 日韩高清免费观看| 久久er国产精品免费观看8| 亚洲高清不卡视频| 国产一区二区免费在线| 99在线在线视频免费视频观看| 色老板亚洲视频免在线观| 亚洲精品动漫人成3d在线| 永久在线免费观看| 又长又大又粗又硬3p免费视频| 亚洲国产二区三区久久| 国产精品色午夜视频免费看|