在开发自定义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();
......和其他变化,但似乎没有任何作用。是否可以在MVVM框架中为自定义Kendo UI小部件接受{ prop: value, prop2: value2 }
之类的对象?
答案 0 :(得分:1)
您的答案在本文中Making Kendo UI Binders for Complex Types。
如果您曾尝试自己制作这样的活页夹,那么您就拥有了 可能遇到问题。剑道实际上不提供支持 自定义绑定器的这些复杂绑定路径。
基本上,Kendo UI期望您的表达式是变量或函数名称的字符串表示形式,而不是复杂对象。您需要做的是多次调用this.bindings.class.get()
来检索所需的值。
要获取要读取的get()
函数的这些值,您将在绑定的init()
构造函数方法中从复杂对象创建键/值对列表。然后,在您的绑定refresh()
方法中,您只需遍历此列表并调用get()
。