【问题标题】:How to update k-ng-model (a.k.a. two-way binding like with ng-model)如何更新 k-ng-model(也就是 ng-model 的双向绑定)
【发布时间】:2015-07-12 14:45:24
【问题描述】:

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


一点上下文:

在 Angular 中,当 ng-model 更新完成时,所有相关方都会更新(例如,视图被刷新)。在剑道中,当使用 k-ng-model 时,我找不到做同样的方法,我想直接从控制器/指令中设置值。

这里是一个例子: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

迪翁·迪尔扎

【问题讨论】:

    标签: javascript angularjs kendo-ui telerik


    【解决方案1】:

    正如文档所说,k-ng-model 应该存储或返回小部件值的实际类型。因此,要使您的变量kendoSelection 起作用,您应该将其定义为小部件值的实际类型,在这种情况下,它是用于自动完成小部件的数组类型。

    更改您的代码

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

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

    【讨论】:

    • 问题是,k-on-change 仍然没有触发,但是是的,这是朝着好的方向迈出的一步。
    • 在这个dojo k-on-change 中完美运行。你的问题是什么?也许针对不同的上下文提出另一个问题。
    • 当从“代码隐藏”设置 vm.kendoSelection 时,会为您触发 k-on-change?dojo.telerik.com/@DenisB/AmaLI/4
    • 您之前没有提到它是“以编程方式”进行的,是的,无法触发更改事件,正如documentation 所指出的那样。您可以为它添加$watch
    猜你喜欢
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2013-03-13
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多