2013-02-22 65 views
0

我从来没有在挖空之前做过这件事,所以我肯定我错了。在挖空中执行嵌套的foreach循环

我这里有一个的jsfiddle,显示问题:http://jsfiddle.net/pdavis68/xebq7/

这里是相关的HTML:

<!-- ko foreach: Parameters --> 
     <select data-bind="attr: { id: Name }"> 
      <!-- ko foreach: $parent.ValidValues --> 
      <option data-bind="value: Value, text: Label"></option> 
      <!-- /ko --> 
     </select> 
    <!-- /ko --> 

和相应的JavaScript:

var ViewModel = function() { 
    var self = this; 
    self.Parameters = ko.observableArray(); 
} 
var currentItem; 

$(document).ready() { 
    currentItem = new ViewModel();  
    ko.applyBindings(currentItem); 

    currentItem.Parameters.push(
     [{"Name":"WarehouseCode", "ValidValues": 
      [{"Label":"Warehouse 1-- (01)","Value":"01"}, 
      {"Label":"Warehouse 2 -- (02)","Value":"02"}]}]); 
} 

我的目标,当然, ,是要使用ValidValues来填充<select>中的<option>标签,正如您从jsFiddle中看到的,那不是发生。

如何更正我的HTML?

谢谢。

回答

0

你有几个问题:

  1. document.ready(...)语法是错误的。你想要的是块看起来像:

    $(document).ready(function() { ... }); // <-- note the "function" 
    
  2. 你推一个数组到你的项目的可观察到的阵列。你真的想更新可观察到的阵列使用新值:

    currentItem.Parameters([{ 
        "Name": "WarehouseCode", 
        "ValidValues": [{ 
         "Label": "Warehouse 1-- (01)", 
         "Value": "01" 
        }, { 
         "Label": "Warehouse 2 -- (02)", 
         "Value": "02" 
        }] 
    }]); 
    
  3. 你是既不包括KnockoutJS也不jQuery的的小提琴。

更新例如:http://jsfiddle.net/xebq7/1/