Как сохранить внутреннее свойство в виджете jquery-ui? - PullRequest
5 голосов
/ 04 января 2012

Я программирую новый виджет jquery-ui с нуля. Я нашел официальный документ «как работает фабрика виджетов». (http://jqueryui.com/demos/widget/)

Сам виджет работает нормально. Теперь я хочу сохранить некоторые значения внутри - есть ли предпочтительный способ сделать это?
Я думаю, что все свойства, которые объявлены в опциях, являются публичными.

Спасибо за вашу помощь!

1 Ответ

8 голосов
/ 04 января 2012

Просто используйте простые старые свойства на this. Например, базовый виджет будет выглядеть примерно так:

$.widget('some_name', {
    options: { /* ... */ },
    _create: function() {
        // ...
        this.internal_value = 11;
        // ...
    },
    frobnicate_by: function(this_much) {
        this.internal_value += this_much;
    }
    // ...
});

И вы можете настроить свои внутренние значения как свойства this по желанию. Например, вышеприведенное устанавливает this.internal_value в начальное значение 11, а $(s).some_name('frobnicate_by', 23) изменит internal_value.

Вы можете увидеть пример внутреннего свойства в примере виджета, с которым вы связались, выполнив поиск this.changer.

options используется для вещей, которые можно настроить, когда кто-то создает экземпляр вашего виджета. Внутренние настройки не требуют какой-либо специальной обработки, это просто старые свойства объекта; одна из приятных особенностей фабрики виджетов заключается в том, что она позволяет легко выполнять обычные OO-операции в ваших виджетах.

...