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()
]));
}
});
我想知道是否有办法访问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()
]));
}
});