首页 > 解决方案 > 剑道树视图和树下拉列表 - 当前选择和同步更改

问题描述

这个片段 http://dojo.telerik.com/UGaFucez

有两个控件 - 树视图和树下拉。这 2 个控件共享一个数据源,因此它们显示相同的树。但令人费解的是,它们似乎也共享当前选择的值,当您在一个字段中更改选择时,它也会在另一个字段中更改。如何?数据源不应该共享当前选定的值(没有当前选定值的概念)。并且没有设置 MVVM 绑定。但不知何故,这些领域保持同步 - 任何人都可以解释为什么以及背后的原因是什么?我怎样才能断开这种依赖关系?

标签: kendo-uikendo-treeview

解决方案


实际上,经历过的行为除外。DataSource 对象保存记录的状态。换句话说,我们在 kendo 数据源对象中保留了扩展、选择、检查……等等状态。这可以在大多数情况下用作增强功能。例如,您应该只触发一个删除/创建/更新请求,并将数据应用于所有关联的小部件。但是,确实对于某些场景中是不适合的。对于您的情况,您可以拥有不同的 DataSource 实例并使用它们填充小部件:

  var data= [
        {
          text: "Furniture", items: [
            { text: "Tables & Chairs" },
            { text: "Sofas" },
            { text: "Occasional Furniture" }
          ]
        },
        {
          text: "Decor", items: [
            { text: "Bed Linen" },
            { text: "Curtains & Blinds" },
            { text: "Carpets" }
          ]
        }
      ]      

  var ds1 = new kendo.data.HierarchicalDataSource({
      data: data
    });      
  var ds2 = new kendo.data.HierarchicalDataSource({
      data: data
    });  


  var treeview = $("#treeview").kendoTreeView({
    dataSource:ds1 
  }).data("kendoTreeView");

  $('#treeField').kendoDropDownTree({
    dataSource: ds2
  });

这是关于此事的道场示例:http: //dojo.telerik.com/@nenchef/ucapaTeT


推荐阅读