виджет, вызвать функцию из-за ошибки опции?

0

В виджетах я пытаюсь вызвать функцию из свойства в параметрах

getThing: this._runFunc()  

но я получаю сообщение об ошибке: _runFunc() не является экземпляром объекта? вы можете помочь?


 $.widget('my.testW', {
        options:{
            buttons:buttons,
            getThing: this._runFunc() // why wont _runFunc work?
        },
        _create: function () {
                //do things    
                var s = this.options.getThing;

        },
        _runFunc: function (){
            return 'hello world'
        }
    });
Теги:
jquery-plugins

1 ответ

4
Лучший ответ

В $.widget вызова, то options объекта и анонимный литерал объекта, в котором он содержится только параметры в $.widget, так this относится к тому, что this было за пределами $.widget вызова, а не только что определенный виджет.

AFAIK, нет способа ссылаться на какой-либо другой элемент из того же анонимного литерала объекта из значений этого литерала.

Если вы хотите скрыть свою функцию, вы можете определить свой виджет таким образом:

(function() {
     function _runFunc() {
          return 'hello world';
     };

     $.widget(..., {
         options: {
             getThing: _runFunc()
         },
         _runFunc: _runFunc;  // if you want to expose this method
     });
 })();

где IIFE включает функцию полезности в пределах этой области.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню