2013-05-18 47 views
0

因此,我有一個視圖和一個鏈接到該視圖的控制器,並且我想通過存儲動態地將值分配給視圖中的xtype項目。如何在Sencha Touch中動態創建xtype模板

因此,例如,我想動態設置layouts(請看看在proveded代碼)和urls

items: [ 
     { 
      itemId: 'nav_home', 
      id: 'homeView', 
      layout: "{layout}", 
      items: [{ 
       xtype: 'articlelist', 
       id: 'latestNews', 
       url: {url}, 
      } 
     ], 
    }, 

任何人都可以引導我如何處理這個任務嗎?

感謝

回答

2

你可以使用初始化函數來呈現基於一些條件組成。這裏有一個例子:

Ext.define('MyApp.view.MyView', { 
    extend: 'Ext.Container', 
    alias : 'widget.myview', 
    config: { 
     items : [], 
     mylayout: null 
    }, 
    initialize : function(){ 
     var me = this; 
     if(me.config.mylayout == 'horizontal'){ 
      me.add({ 
       xtype : 'panel', 
       layout : 'hbox', 
       items : [{ 
        xtype : 'panel', 
        html : 'first content' 
       }, 
       { 
        xtype : 'panel', 
        html : 'second content' 
       }] 
      }); 
     } else if(me.config.mylayout == 'vertical'){ 
      me.add({ 
       xtype : 'panel', 
       layout : 'vbox', 
       items : [{ 
        xtype : 'panel', 
        html : 'first content' 
       }, 
       { 
        xtype : 'panel', 
        html : 'second content' 
       }, 
       { 
        xtype : 'panel', 
        html : 'third content' 
       }] 
      }); 
     } 
     me.callParent(); 
    } 
}); 

您可以創建這個觀點是這樣的:

var myView = Ext.create("MyApp.view.MyView", { 
    mylayout : 'vertical' 
}); 

mylayout可能是你想傳遞的任何配置對象。

+0

That'a awesome answer!謝謝! –

+0

但是,我剛纔發現,我們的視圖擴展了:'Ext.ux.slidenavigation.View' 它會拋出一個錯誤:'未捕獲的TypeError:無法讀取未定義的'raw'屬性,我相信這是因爲那裏沒有什麼'this.config.items' –

+0

嘿芽,檢查這個問題,我相信你應該知道答案: http://stackoverflow.com/questions/16644890/dynamically-add-xtype-items-to-the - 面板與 - slidenavigatoin –