如何更新k-ng-model(与k-model一样的双向绑定)

时间:2015-07-12 14:45:25

标签: javascript angularjs kendo-ui telerik

Kendo k-ng-model是否支持双向绑定,如果不支持,那么模拟它的最佳方法是什么?

一些上下文:

在角度中,当完成对ng-model的更新时,更新所有感兴趣的各方(例如,刷新视图)。在kendo中,当使用k-ng-model时,我找不到相同的方法,我想直接从controller /指令设置值。

以下是一个示例:Coding Dojo

而且,以防万一,代码也是如此:

 <input kendo-auto-complete 
        k-ng-model="vm.kendoSelection" 
        ng-model="vm.angularSelection"                     
        k-data-source="vm.countryNames" 
        k-data-value-field="'name'"
        k-data-text-field="'name'" />

样本控制器:

  angular.module("MyApp", [ "kendo.directives" ])
         .controller("Controller", function(){                  
             // just some data source
             this.countryNames = [
                { name: "Albania" },
                { name: "Andorra" }
              ];

             // how to set the k-ng-model here, so that it is also propagated properly (like on 
             // the view, and that other events like k-on-change work)?
             this.kendoSelection = { name: "Albania" };                  
          });

修改

即使在Dion Dirza的回答之后,k-on-change也没有解雇(尽管这是一个方向很好的解决方案)

Example with k-on-change

Dion Dirza

1 个答案:

答案 0 :(得分:3)

正如文档所说,k-ng-model应该存储或返回实际类型的窗口小部件值。因此,要使变量kendoSelection有效,您应该将其定义为实际类型的窗口小部件值,在本例中为自动完成窗口小部件的数组类型。

更改您的代码

vm.kendoSelection = [{ name: "Albania" }];

因为你在这里存储对象数组所以你的变量应该是对象的数组。请注意,您的对象应包含定义为小部件 data-value-field 的属性,该属性将用于与当前数据源进行比较。