首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在敲除模板中迭代2数组

在敲除模板中迭代2数组
EN

Stack Overflow用户
提问于 2017-02-06 05:56:34
回答 2查看 301关注 0票数 0

在视图模型中,我有两个数组。比如arr1和arr2。我想在html模板中迭代数组和呈现视图。

我想用html编写相当于以下js代码的代码。

代码语言:javascript
复制
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中实现同样的目标。

代码语言:javascript
复制
<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值的条件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-06 06:02:23

我想你是想这么做:

代码语言:javascript
复制
<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.引用第一个前景的范围以外的范围。

票数 0
EN

Stack Overflow用户

发布于 2017-02-06 13:24:08

您可以使用在knockoutjs上的if绑定来获得与在javascript示例中应用的方法相同的方法。

我创建了一个如何使用嵌套*foreach绑定和if绑定的示例。

JS

代码语言:javascript
复制
var vm = {  
    array1 : ko.observableArray(['x', 'y', 'z']), 
    array2: ko.observableArray([1,2,3]) 
}; 
ko.applyBindings(vm);

代码语言:javascript
复制
<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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42061176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档