我有一个网格视图,在这个网格面板上方,我添加了一个模板:
....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中添加模板的占位符吗? 谢谢!
答案 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()
网格基于选择的记录数据。