如何在Sencha Touch中动态创建xtype模板

时间:2013-05-18 08:47:02

标签: javascript sencha-touch

所以我有一个视图和一个链接到该视图的控制器,我想通过商店动态地为视图中的xtype项分配值。

例如,我想动态设置layouts(请查看经过验证的代码)和urls

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

有人能引导我如何处理这项任务吗?

由于

1 个答案:

答案 0 :(得分:2)

您可以使用initialize函数根据某些条件渲染组件。这是一个例子:

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可以是您要传递的任何配置对象。