2012-01-03 50 views
0

這是我的模板:Knockoutjs沒有更新我的UI時,我改變observableArray

<tr> 
    <td> 
     <table> 
      <thead> 
       <th> 
        <span>Option name:</span> 
       </th> 
      </thead> 
      <tbody data-bind="template: {name: 'optionChoiceTemplate', foreach: choices, templateOptions:{choiceArray: choices} }"></tbody> 
     </table> 
     <button data-bind="click: function(){choices.push('');}">Add new</button> 
    </td> 
</tr> 

但是,當我點擊「新增」按鈕,我的觀點不更新,以包括與新選項空的字符串。我已經檢查過調試器,將空字符串添加到選項中,並且我確定選擇是observableArray,還有什麼可能會出錯?

回答

0

的問題是,使用jQuery插件模板與templateforeach選項綁定時,空字符串被視爲空值,而不是渲染。

您可以通過使用對象{text: ''}並綁定到text或通過推送除空字符串以外的內容(如單個空格)來解決此問題。

或者,如果您能夠移動到Knockout 2.0並使用本機模板,那麼您的空字符串項目將被正確渲染。

+0

謝謝。很可能後面會有一些與該文本關聯的其他數據,所以我會將它變成一個對象。 – Drew 2012-01-03 05:13:10

0

我創建了一個使用HTML顯示項目列表的小提琴,並允許用戶以兩種方式添加新項目。第一種方法是使用您創建的點擊功能。第二種方法是使用點擊綁定。

這應該回答你的問題。

http://jsfiddle.net/johnpapa/4PfUr/

相關問題