如何从ExtJS6中的dataview的tpl中访问视图?

时间:2016-03-15 00:11:37

标签: extjs extjs6

我正在尝试针对数据视图内部的组合框值进行测试&#t; tpl:

Ext.define('MyForm', {
    extend: 'Ext.form.Panel',
    items: [
        {
            xtype: 'combo',
            name: 'my_combo',
        },
        {
            xtype: 'dataview',
            tpl: new Ext.XTemplate(
                '<tpl for=".">',
                    '<tpl if="this.test()">pass</tpl>',
                '</tpl>'
            , 
            {
                test: function(){
                    //doesn't work
                    return this.getView().down('[name=my_combo]').getValue() == 'ok';
                }
            }),
        }
    ]
});

这不起作用,因为this引用了模板本身,我无法弄清楚如何从内部访问视图。

1 个答案:

答案 0 :(得分:1)

无法访问XTemplate中的视图。要实现这一点,您可以使用ViewModel,这里是它的代码。

工作的sencha小提琴https://fiddle.sencha.com/#fiddle/175s

更新:我更新了代码以使用DataView,DataView有点棘手,我覆盖了prepareData方法以将额外信息传递给模板,并且每当组合值更改时也更新DataView 。以下是更新后的更改https://fiddle.sencha.com/#fiddle/175s

use ships;

select CLASSES.CLASS, COUNT(CASE WHEN RESULT = 'sunk' THEN 1 ELSE NULL END)
from CLASSES
left join SHIPS on CLASSES.CLASS = SHIPS.CLASS
left join OUTCOMES on NAME = SHIP
group by CLASSES.CLASS;