在视图模型中,我有两个数组。比如arr1和arr2。我想在html模板中迭代数组和呈现视图。
我想用html编写相当于以下js代码的代码。
for(var i = 0; i< arr1.length; i++){
for(var j=0;j<arr2.length;j++){
if(arr1[i] == 'x' && arr2[j] == 'y'){
//render input field
}
if(arr1[i] == 'w' && arr2[j] == 'z'){
//render checkbox
}
}
}我想在下面的html中实现同样的目标。
<div data-bind="foreach : arr1">
<!-- ko foreach: arr2 -->
// conditions to be added here for rendering input field or checkbox
<!-- /ko -->
</div>如何像javascript中那样给出在html中比较arr1和arr2值的条件?
发布于 2017-02-06 06:02:23
我想你是想这么做:
<div data-bind="foreach: { data: arr1, as: 'a' }">
<!-- ko foreach: { data: $parent.arr2, as: 'b' } -->
// You should be able to reference 'a' and 'b' here
<!-- /ko -->
</div>需要$parent.引用第一个前景的范围以外的范围。
发布于 2017-02-06 13:24:08
您可以使用在knockoutjs上的if绑定来获得与在javascript示例中应用的方法相同的方法。
我创建了一个如何使用嵌套*foreach绑定和if绑定的示例。
JS
var vm = {
array1 : ko.observableArray(['x', 'y', 'z']),
array2: ko.observableArray([1,2,3])
};
ko.applyBindings(vm);<div data-bind="foreach: { data: array1, as: 'arr1' }">
<!-- ko foreach: { data: $root.array2, as: 'arr2' } -->
<label data-bind="text: arr1"></label>
<div data-bind="if: arr2 == 1">
<input type="text" data-bind="value: arr2" />
</div>
<div data-bind="if: arr2 == 2">
<input type="checkbox" />
</div>
<div data-bind="if: arr2 == 3">
<select></select>
</div>
<!-- /ko -->
</div>这里的工作示例:https://jsfiddle.net/6evL0n2c/3/
https://stackoverflow.com/questions/42061176
复制相似问题