我用tpl(XTemplate)查看,这个tpl的数据是一个商店。 在程序工作期间,某个商店的项目会更改其中一个字段值。正如预期的那样 - tpl也会发生变化。但是,重新绘制所有模板项目,并在视觉上看起来像闪烁。
Sencha docs说我们可以使用tplWriteMode属性更改模板的默认覆盖方法,但它不起作用(参见下面的示例)。
Ext.application({
name : 'Fiddle',
launch : function() {
var tpl = new Ext.XTemplate('<tpl for=".">',
'<div>',
'{name}',
'<br/>',
'<span>Best Friend:{bestFriend}</span>',
'</div>',
'</tpl>',
{
newOverWriteMode: function(){
console.log('hello from newOverWriteMode');
}
});
Ext.create('Ext.panel.Panel', {
title: 'Hello',
width: 200,
data: [
{
name: 'Mike',
bestFriend: 'Anna'
},
{
name: 'Bob',
bestFriend: 'Peter'
}
],
tpl: tpl,
tplWriteMode: 'newOverWriteMode',
renderTo: Ext.getBody()
});
}
});
我做错了什么,或者我理解这种方法的任务是错误的?
答案 0 :(得分:0)
根据文档,tplWriteMode不用于第一次创建内容,这是我在示例代码中看到的唯一内容。
此外,我不确定为什么组件应该自动重新呈现,因为你在后面的某处更改了data
属性。通常,它会显式调用applyData或类似函数来更新组件的内容。大多数情况下,组件会侦听其大多数商店事件(加载,更新,...),并在这些事件触发时调用applyData或类似方法。
当您查看我使用您的代码制作的fiddle时,&#34;更改&#34;按钮将更改数据并在之后调用applyData。在小提琴中,组件内容不会更新,因为我保持启用(空)newOverwrite方法 - 因此您可以获得希望的控制台日志。在您评论tplWriteMode之后,数据会更新。
所以在我看来好像tplWriteMode正如文档中描述的那样工作。
HTH!