mvvm - 剑道 ui mvvm : dynamically update multiselect datasource inside View Model' s change event

标签 mvvm kendo-ui

我有一个带有两个多选小部件的 View ,其值(region_edu_admin,edu_admin)和数据源(region_edu_admins_ds,edu_admins_ds)绑定(bind)(通过数据绑定(bind))到 ViewModel。在 region_edu_admin 的更改事件 (regionEduAdminChanged) 中,我尝试使用 set 方法重新加载 edu_admin 的小部件数据源,即 edu_admins_ds。虽然我确实进入了 newEduAdminsDS(),但数据源并没有重新加载。任何关于我在这里遗漏的想法将不胜感激!你可以看到下面的代码:

/* 查看模型 */

var LabsSearchVM = kendo.observable({
  region_edu_admins_ds: newRegionEduAdminsDS(),
  edu_admins_ds: newEduAdminsDS(), 
  region_edu_admin: "",
  edu_admin: "",    
  regionEduAdminChanged: function(e) {
    this.set("edu_admins_ds", newEduAdminsDS());
  }
});

/* 看法 */
<label for="region_edu_admin">Περιφερειακή Διεύθυνση Εκπαίδευσης</label>
<select id="sl_region_edu_admin" 
        name="region_edu_admin"
        data-role="multiselect"
        data-auto-bind="false"
        data-value-primitive="true"
        data-text-field="name"
        data-value-field="name"
        data-bind="source: region_edu_admins_ds, value: region_edu_admin, events: {change : regionEduAdminChanged }"
        data-filter="contains"
        multiple="multiple">                    
</select>
<label for="edu_admin">Διεύθυνση Εκπαίδευσης</label>
<select id="sl_edu_admin" 
        name="edu_admin"
        data-role="multiselect"
        data-auto-bind="false"
        data-text-field="name"
        data-value-field="name"
        data-bind="source: edu_admins_ds, value: edu_admin"
        data-filter="contains"
        multiple="multiple">
</select>

/* newEduAdminsDS() 函数 */
function newEduAdminsDS() {    
  var edu_admins_ds = new kendo.data.DataSource({
    transport: {
      read: {
        url: "api/edu_admins",
        type: "GET",
        dataType: "json"
      }
    },
    schema: {
      data: "data",
      model: {
        id: "edu_admin_id",
        fields: {
          edu_admin_id: { editable: false },
          name: { editable: false },
          region_edu_admin_id: { editable: false },
          region_edu_admin: { editable: false }
        }
      }
    }
  });

  return edu_admins_ds;    
}

最佳答案

您不需要重新创建 DataSource。您需要做的就是告诉 read()再次重新加载数据。更改regionEduAdminChanged在你的 observable 中起作用:

regionEduAdminChanged: function(e) {
  this.edu_admins_ds.read();
}

关于mvvm - 剑道 ui mvvm : dynamically update multiselect datasource inside View Model' s change event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23908777/

相关文章:

angular - 在 Angular 2 中刷新 Kendo 网格

javascript - 在 Transport.read 函数中访问 dataItem

wpf - MVVM ViewModel 是否应该执行类型转换/验证?

c# - 视觉状态和自定义依赖属性 (MVVM)

java - 使用以数据为中心的方法在 Spring MVC 中维护干净的架构

WPF:在绑定(bind)到可观察集合的选项卡控件中隐藏选项卡项

javascript - 如何使用 Kendo 文件上传发送额外值

javascript - 如何实现模块化细节-老版本KendoUI Grid模板

javascript - 在 Kendo 网格列模板中添加计算

c# - TextBox TextChanged 事件问题