Я запускаю раскрывающийся список Kendo UI, привязывая виджет к объекту Observable. Как мне "сбросить" привязку значения к null после того, как будет сделан выбор, если для свойства valuePrimative
в моем выпадающем valuePrimative
установлено значение false?
HTML:
<select
data-role="dropdownlist"
data-text-field="name"
data-value-field="id"
data-option-label="Select to add..."
data-bind="source: rootData, value: selectedValue">
</select>
<button class='add-to-list-button k-button k-add' data-bind="click: add enabled: selectedValue">+</button>
Наблюдаемое:
this.widgetObservable = kendo.observable({
rootData: this.rootData,
selectedValue: null,
myList: [],
delete: (e) => {
this.deleteItem(e);
},
add: (e) => {
this.addItem(e);
}
});
Сброс выбранной опции в раскрывающемся списке ($('select', this.$container).data('kendoDropDownList').select(0)
действительно сбросит мое раскрывающееся $('select', this.$container).data('kendoDropDownList').select(0)
, но оно не очистит мою selectedValue
переменную $('select', this.$container).data('kendoDropDownList').select(0)
.
Если valuePrimitive
параметра valuePrimitive
установлено значение true, я могу сбросить selectedValue
переменную -1
на -1
, которая действительно сбросила бы эту переменную и отключила бы мою кнопку, но это означает, что значение, возвращаемое выпадающим списком, было бы примитивным, заставляя меня искать исходный объект в некотором объекте сопоставления.
В идеале, когда я выбираю значение и нажимаю кнопку "Добавить", я хочу по существу, делать вещи с выбранным ОБЪЕКТОМ, а затем сбросить раскрывающийся список до его исходного состояния.
Я видел, что он предложил использовать Combobox вместо Dropdown, если я хочу очистить выделение, потому что выпадающее меню всегда имеет выбранное значение (что имеет смысл), но это вызывает вопрос, который выбирается после начальной загрузки (перед любым выбором ) и почему я не могу просто сбросить это начальное значение? Кроме того, мне не нужны дополнительные функции, которые поставляются с комбинированным ящиком.
Должен ли я даже не беспокоиться об enabled
привязке к кнопке?
Вы должны быть в состоянии сделать
delete: function(e) {
this.set('selectedValue', null);
}
если вы используете синтаксис (e) => {}
это не будет наблюдаемым, поэтому будьте осторожны.
ваше падение должно реагировать на это через mvvm.
selectedValue
на ноль (примитив), я получаю ошибку. Другими словами, ваше решение работает только тогда, когда параметр valuePrimitive в раскрывающемся списке имеет значение true, и это конкретное решение задокументировано во многих местах.