2011-05-16 97 views
2

我正在使用Knockout開始工作。我無法弄清楚如何在valuesTemplate中設置綁定。迭代器的當前值的名稱是什麼?Knockout中的當前值的名稱

<div id="knock"> 
    <p>Name: <input data-bind="value: Name" /></p> 
    <table> 
     <thead><tr><td>Value</td></tr></thead> 
      <tbody data-bind="template: {name: 'valuesTemplate', foreach: Values}" /> 
    </table> 

    <script type="text/html" id="valuesTemplate"> 
     <tr><td><input data-bind="value: value" /></td></tr> 
    </script> 
</div> 

<script type="text/javascript"> 
    var data = {"Name":"Fish","Values":["Cod","Salmon","Perch","Glish"],"Id":"lookups/1"}; 
    var viewModel = ko.mapping.fromJS(data); 
    ko.applyBindings(viewModel); 
</script> 

回答

5

裏面一個jQuery的模板,你可以通過使用$data$item.data訪問當前上下文,所以像:

<script type="text/html" id="valuesTemplate"> 
    <tr><td><input data-bind="value: $data" /></td></tr> 
</script> 

但是,如果使用的是可觀察,你會想你的價值觀數組來包含對象而不僅僅是字符串。

+0

完美工作,謝謝! – 2011-05-16 20:24:24

+0

如果您正在使用observables,那麼您會希望您的值數組包含對象(甚至像{name:'value'})。您無法使數組中的單個項目的值可觀察。 – 2011-05-16 20:28:56

+0

我切換到了。謝謝你的提示。 – 2011-05-17 13:10:54