javascript - 如何更新 k-ng-model(也就是像 ng-model 一样的双向绑定(bind))

标签 javascript angularjs kendo-ui telerik

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


一些上下文:

在 Angular 中,当完成对 ng-model 的更新时,所有相关方都会更新(例如刷新 View )。在剑道中,当使用 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'" />

示例 Controller :

  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

迪翁迪扎

最佳答案

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

更改代码

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

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

关于javascript - 如何更新 k-ng-model(也就是像 ng-model 一样的双向绑定(bind)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31369025/

相关文章:

javascript - 可以在 JS 中创建类/实例范围的 getter 和 setter 吗?

javascript - 如何使用时刻获取相同日期的数据?

javascript - Angular ng-options选择选项视觉反馈问题

jquery - 单击剑道按钮时如何在 div 中添加新文本框?

javascript - 在 AngularJS 中,如何调用 Controller 内的指令来执行任务?

javascript - Firefox Javascript 事件匿名函数

JavaScript - 比较两个相同的字符串但它们不相等

javascript - iOS 7+ 向后滑动手势与 stateChange 动画冲突

javascript - Kendo Treeview : check if a node has siblings or children