Изменить глубокие параметры в виджете jQuery UI
Каков наилучший способ изменить глубоко вложенную опцию в виджете jQuery после его создания?
$.widget("test.widget1", {
options: {
deepOption: {
prop1: false,
prop2: false
}
},
_create: function() {
},
_init: function () {
this.element.append('<br>' + this.options.deepOption.prop1 + " " + this.options.deepOption.prop2);
}
})
$("#one").widget1();
$("#one").widget1({
deepOption: {
prop1: true
}
});
Приведенный выше код изменяет prop1
вариант к истине и ядерному оружию prop2
, Как я могу изменить prop1
сохраняя prop2
,
Изменить: я придумал решение, но это похоже на взлом. Это лучший способ сделать то, что я пытаюсь сделать?
$.widget("test.widget1", {
options: {
deepOption: {
prop1: false,
prop2: false
}
},
_create: function() {
},
_init: function () {
this.element.append('<br>' + this.options.deepOption.prop1 + " " + this.options.deepOption.prop2);
},
_setOption: function (key, value) {
switch(key) {
case 'deepOption':
value = $.extend({}, this.options.deepOption, value);
break;
}
$.Widget.prototype._setOption.apply(this, arguments);
}
})
$("#one").widget1();
$("#one").widget1({
deepOption: {
prop1: true
}
});
1 ответ
.option()
как было расширено в jQuery UI 1.9 для поддержки установки частичных вложенных параметров, как описано в журнале изменений.
Чтобы изменить такую опцию после создания виджета, теперь вы можете использовать:
$("#one").widget1('option', 'deepOption.prop1', true);