Пользовательский виджет Kendo MVVM: принять объект в качестве параметра
При разработке пользовательского виджета Kendo MVVM передача простого связанного с данными параметра кажется приемлемой, будь то в пользовательской привязке. IE:
<div data-bind="value: simpleParameter">This works fine</div>
<div data-bind="mybinding: simpleParameter">This also works fine</div>
Я замечаю css
а также events
привязки могут принимать объекты в качестве параметров. Я действительно хочу принимать объекты в качестве параметров, но когда я пытаюсь, это выдает ошибку:
<div data-role="mycomponent" data-bind="value: { prop: value }">This throws</div>
<div data-role="mycomponent" data-bind="mybinding: { prop: value }">This throws too</div>
В случае пользовательского связывания, оно не выдается, пока я не попытаюсь получить доступ к значению. Я попробовал это как...
var arg = this.bindings["mybinding"].get();
... и другие варианты, но ничего не работает. Можно ли принимать такие объекты, как { prop: value, prop2: value2 }
для пользовательских виджетов Kendo UI в их структуре MVVM?
1 ответ
Ваш ответ находится в этой статье, Создание Kendo UI Binder для сложных типов.
Если вы пытались сделать такое связующее, вы, вероятно, столкнулись с проблемами. Kendo фактически не предоставляет поддержку этих сложных путей привязки для пользовательских связывателей.
По сути, Kendo UI ожидает, что ваши выражения будут строковым представлением имени переменной или функции, а не сложным объектом. Что вам нужно сделать, это позвонить this.bindings.class.get()
несколько раз, чтобы получить нужные вам значения.
Чтобы получить эти значения для get()
Чтобы прочитать функцию, вы создадите список пар ключ / значение из сложного объекта в привязке init()
метод конструктора. Тогда в твоей привязке refresh()
метод, вы просто перебираете этот список и вызываете get()
,