tplWriteMode属性不起作用

时间:2015-12-01 12:34:40

标签: extjs

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

});

我做错了什么,或者我理解这种方法的任务是错误的?

1 个答案:

答案 0 :(得分:0)

根据文档,tplWriteMode不用于第一次创建内容,这是我在示例代码中看到的唯一内容。

此外,我不确定为什么组件应该自动重新呈现,因为你在后面的某处更改了data属性。通常,它会显式调用applyData或类似函数来更新组件的内容。大多数情况下,组件会侦听其大多数商店事件(加载,更新,...),并在这些事件触发时调用applyData或类似方法。

当您查看我使用您的代码制作的fiddle时,&#34;更改&#34;按钮将更改数据并在之后调用applyData。在小提琴中,组件内容不会更新,因为我保持启用(空)newOverwrite方法 - 因此您可以获得希望的控制台日志。在您评论tplWriteMode之后,数据会更新。

所以在我看来好像tplWriteMode正如文档中描述的那样工作。

HTH!