extJs从嵌套对象访问父函数

时间:2014-12-02 15:58:51

标签: javascript extjs

我试图从嵌套对象内部访问父对象的函数。

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

2 个答案:

答案 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提供。