2013-02-22 52 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/