Extjs tplWriteMode属性不起作用
我对tpl(XTemplate)有看法,该tpl的数据是一个存储。 在程序工作期间,某个存储区的项会更改其中一个字段值。正如所料,第三方物流也发生了变化。但是,重新绘制所有模板项,在视觉上它看起来像闪烁 假设我们可以使用tplWriteMode属性更改模板的默认覆盖方法,但它不起作用(请参见下面的示例)Extjs tplWriteMode属性不起作用,extjs,Extjs,我对tpl(XTemplate)有看法,该tpl的数据是一个存储。 在程序工作期间,某个存储区的项会更改其中一个字段值。正如所料,第三方物流也发生了变化。但是,重新绘制所有模板项,在视觉上它看起来像闪烁 假设我们可以使用tplWriteMode属性更改模板的默认覆盖方法,但它不起作用(请参见下面的示例) Ext.application({ 名字:“小提琴”, 启动:函数(){ var tpl=新的Ext.XTemplate(“”, '', “{name}”, “”, '最好的朋友:{bestFr
Ext.application({
名字:“小提琴”,
启动:函数(){
var tpl=新的Ext.XTemplate(“”,
'',
“{name}”,
“
”,
'最好的朋友:{bestFriend}',
'',
'',
{
newOverWriteMode:function(){
log('hello from newOverWriteMode');
}
});
Ext.create('Ext.panel.panel'{
标题:“你好”,
宽度:200,
数据:[
{
名字:“迈克”,
最好的朋友:“安娜”
},
{
姓名:'鲍勃',
最好的朋友:“彼得”
}
],
第三方物流:第三方物流,
tplWriteMode:“新建覆盖模式”,
renderTo:Ext.getBody()
});
}
}))
是我做错了什么,还是我理解这个方法的任务错了?根据文档,tplWriteMode不用于首次创建内容,这是我在示例代码中看到的唯一一件事 此外,我不知道为什么组件应该自动重新加载,仅仅因为您在后面的某个地方更改了
数据
属性。通常,它需要显式调用applyData或类似函数来更新组件的内容。大多数情况下,组件侦听其存储区的大多数事件(加载、更新等),并在触发这些事件时调用applyData或类似方法
当您查看由代码生成的I时,“更改”按钮将更改数据,然后调用applyData。在fiddle中,组件内容没有更新,因为我启用了(空的)newOverwrite方法,所以您可以得到希望得到的控制台日志。注释掉tplWriteMode后,数据将更新
因此,在我看来,tplWriteMode似乎正在按照文档中的描述工作
嗯 根据文档,tplWriteMode不用于首次创建内容,这是我在示例代码中看到的唯一内容 此外,我不知道为什么组件应该自动重新加载,仅仅因为您在后面的某个地方更改了
数据
属性。通常,它需要显式调用applyData或类似函数来更新组件的内容。大多数情况下,组件侦听其存储区的大多数事件(加载、更新等),并在触发这些事件时调用applyData或类似方法
当您查看由代码生成的I时,“更改”按钮将更改数据,然后调用applyData。在fiddle中,组件内容没有更新,因为我启用了(空的)newOverwrite方法,所以您可以得到希望得到的控制台日志。注释掉tplWriteMode后,数据将更新
因此,在我看来,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()
});
}