我有一个IndustryData
可观察数组,它将以下列格式存储数据:
ID Name IsMapped
1 Name1 0
2 Name2 1
3 Name3 0
4 Name4 1
我使用下面提到的select
绑定数据:
<select class="form-control" data-bind="options: $root.IndustryData, selectedOptions: $root.IndustryDataSelectedValues, optionsText: 'name', optionsValue: 'id'" multiple="multiple"></select>
IndustryDataSelectedValues
是一个可观察的数组,它将存储上述select
的选定值,并且它最初将为空。我的要求是应该在我的IsMapped
控件中选择multi select
值为1的行,并且这些项应该在IndustryDataSelectedValues
可观察数组中可用。在上述情况下,应在我的Name2
控件中选择Name4
和multi select
,这两个项目应在IndustryDataSelectedValues
可观察数组中可用。
如何在淘汰赛中实现这一目标?
答案 0 :(得分:1)
有多种方法可以解决这个问题:
IndustryDataSelectedValues
initialize
方法来初始化数组,那么当数据在IndustryData
所以你需要这样的东西:
initialize: function () {
this.IndustryDataSelectedValues(ko.utils.arrayMap(
ko.utils.arrayFilter(this.IndustryData, function (item) {
return item.IsMapped == 1
}), function (item) {
return item.id;
}));
}
演示JSFiddle。
在ko.utils.arrayFilter
的情况下,您首先选择IsMapped == 1
所有项目,然后使用ko.utils.arrayMap
选择之前找到的项目的id
属性并将这些ID存储在IndustryDataSelectedValues