Extjs tplWriteMode属性不起作用

Extjs tplWriteMode属性不起作用,extjs,Extjs,我对tpl(XTemplate)有看法,该tpl的数据是一个存储。 在程序工作期间,某个存储区的项会更改其中一个字段值。正如所料,第三方物流也发生了变化。但是,重新绘制所有模板项,在视觉上它看起来像闪烁 假设我们可以使用tplWriteMode属性更改模板的默认覆盖方法,但它不起作用(请参见下面的示例) Ext.application({ 名字:“小提琴”, 启动:函数(){ var tpl=新的Ext.XTemplate(“”, '', “{name}”, “”, '最好的朋友:{bestFr

我对tpl(XTemplate)有看法,该tpl的数据是一个存储。 在程序工作期间,某个存储区的项会更改其中一个字段值。正如所料,第三方物流也发生了变化。但是,重新绘制所有模板项,在视觉上它看起来像闪烁

假设我们可以使用tplWriteMode属性更改模板的默认覆盖方法,但它不起作用(请参见下面的示例)

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()
    });
}