Sencha Touch 2:扩展 XTemplate - 我可以继承父成员函数吗?

Sencha Touch 2: Extending XTemplate - can I inherit parents member functions?

我想知道是否有办法访问XTemplate 的成员函数集?我正在扩展一个视图并想覆盖 XTemplate,但想保留父 XTemplate 的成员函数。

这是一个例子 - 我的基地 class:

Ext.define( 'my.view', {

xtype: 'myview',

config: {

    itemTpl: new Ext.XTemplate(
    [
            '<p>Name: {name}</p>',
            '<p>Kids: ',
            '<tpl for="kids">',
                '<tpl if="this.isGirl(name)">',
                    '<p>Girl: {name} - {age}</p>',
                '</tpl>',
                 // use opposite if statement to simulate 'else' processing:
                '<tpl if="this.isGirl(name) == false">',
                    '<p>Boy: {name} - {age}</p>',
                '</tpl>',
                '<tpl if="this.isBaby(age)">',
                    '<p>{name} is a baby!</p>',
                '</tpl>',
            '</tpl></p>'
     ].join( "" ),
    {
        // XTemplate configuration:
        compiled: true,
        // member functions:
        isGirl: function(name){
           return name == 'Sara Grace';
        },
        isBaby: function(age){
           return age < 1;
        }
    }
    );
  }
});

"child" 基本上应该是什么样子:

Ext.define( 'my.subview', {

xtype: 'myview',

extend: 'my.view',

config: {

    itemTpl: new Ext.XTemplate(
    [
            '<p>Something completely different here</p>'
     ].join( "" ),
    //this.superclass.getMemberFunctions()
    );
  }
});

提前致谢!

您无法按照您描述的方式进行操作,但也许您可以采用其他方法。

与其期望 XTemplate 继承功能(我不太确定它能做到),不如在可以重用它们的地方定义成员 properties/functions。例如:

Ext.define( 'my.view', {
    xtype: 'myview',

    config: {
        xtemplateStuff : {
            // XTemplate configuration:
            compiled: true,

            // member functions:
            isGirl: function(name){
               return name == 'Sara Grace';
            },
            isBaby: function(age){
               return age < 1;
            }
        }
    },

    initialize : function() {
        this.setItemTpl(new Ext.XTemplate([
            'stuff...',
            this.getXtemplateStuff()
        ]));
    }
});

并且由于 config 中的任何内容都将被继承,您可以在子视图中执行此操作:

Ext.define( 'my.subview', {
    extend: 'my.view',

    initialize : function() {
        this.setItemTpl(new Ext.XTemplate([
            'different stuff...',
            this.getXtemplateStuff()
        ]));
    }
});