我试图从嵌套对象内部访问父对象的函数。
Ext.define('SearchPanel', {
extend: 'common.Panel',
header: false,
xtype: 'search-panel',
layout: 'fit',
items: [
{
xtype: 'form-panel',
items: [
{
xtype: 'datetimefield',
itemId: 'from',
fieldLabel: T('From'),
dateConfig: {
itemId: 'startDate',
value: new Date(),
validator: ValidateRange//trying to access "external" function here
},
timeConfig: {
value: '12:00 AM',
itemId: 'startTime',
validator: ValidateRange//trying to access "external" function here
}
}
],
ValidateRange: //the function I'm trying to call from nested object
function (value) {
//validation logic
}
}
],
});
它不起作用。我收到错误:未捕获的ReferenceError:未定义ValidateRange
答案 0 :(得分:2)
这是不可能的,你必须使用在类外定义的方法。我们可以使用静态成员并引用它:
Ext.define('SearchPanel', {
statics: {
validateRange: function() {}
},
items: {
someRandomChild: {
validator: function() {
return SearchPanel.validateRange.apply(this, arguments);
}
}
}
});
你必须将它包装到另一个函数中,因为当ExtJS“定义”类时没有定义SearchPanel
。
答案 1 :(得分:1)
通过将类附加到window
对象,可以全局访问类外定义的方法。
var externalFunc = function() {
//some logic
};
window.AccessingExternalFunc = externalFunc;
externalFunc
现已在window.AccessingExternalFunc
提供。