EXTJS4:如何在视图中的模板中添加值?

时间:2013-06-26 06:54:26

标签: templates model-view-controller gridview extjs4

我有一个网格视图,在这个网格面板上方,我添加了一个模板:

....items: [{
    xtype: "panel",
    html: new Ext.XTemplate("<div style='margin:5px;'><img src='{imagelink}'/><b>ProductId: {productId}</b></div>")
    },

    {
    xtype: 'grid',
    id:'productGrid',
    height:300,
    columns: [
    {
        header: 'Titel', 
        dataIndex: "title",
        flex:1
    },
    {
        header: 'Typ', 
        dataIndex: "type",
        flex:1
    }
    ]
}]...

我的网格值的数据来自我的控制器。但是如何将动态值添加到我的模板中,可以填充placeholer“imagelink”和“productId”。 我必须在模型中制作一些东西吗?在我的商店中,我得到了值,填充了网格视图,我还可以在这个json中添加模板的占位符吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

您需要检索对包含XTemplate的Component的引用,并调用模板的覆盖方法,提供一个新的el和一组数据用于覆盖模板。

请参阅文档:http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.XTemplate-method-overwrite

这里的JSFiddle示例:http://jsfiddle.net/prq7Y/

关注MVC后,您应该控制XTemplate中的Controller。业务逻辑不应该驻留在模型定义中!观察Panel的渲染事件(在Controller中)并相应地使用overwrite XTemplate!在我的例子中,我使用了一个按钮来更清楚地知道需要发生什么。可以将相同的代码放在驻留在控制器中的事件侦听器中。

答案 1 :(得分:0)

如果您想填充占位符,则必须在网格(http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.grid.Panel-method-update)上调用update(),并传递正确的数据。如果您想在网格中选择特定记录时想要执行此操作,则需要键入网格视图中的一个事件(如itemclick)和update()网格基于选择的记录数据。