代码之家  ›  专栏  ›  技术社区  ›  nightwatch

kendo树视图和树下拉列表-当前选择和更改同步

  •  1
  • nightwatch  · 技术社区  · 7 年前

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

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   nenchef    7 年前

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

      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
      });
    

    下面是一个关于这个问题的Dojo示例: http://dojo.telerik.com/@nenchef/ucapaTeT