2012-06-23 93 views
0

我的代碼是這樣的:淘汰賽錯誤,視圖模型不綁定

<div id="DivToUpdate"> 
    <div> 
     SELECTED ROOM: 
     <input type="text" id="currentRoom" /></div> 
    <div id="messagesList"> 
     <table> 
      <tbody data-bind="foreach: model.Messages"> 
       <tr data-bind="text: Message"> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
</div> 

<script type="text/javascript"> 
var viewModel = {}; 
$('#DivToUpdate').click(function() { 
    $.getJSON("/ControllerAction/JsonPopulateMessages", { jsonRoom: $('#currentRoom').val() }, function (data) { 
     var trueData = JSON.stringify(data); 
     alert(trueData); 
     viewModel.model = ko.mapping.fromJSON(trueData); 
     ko.applyBindings(viewModel); 
    }); 
}); 
    </script> 

我返回的JSON數據是這樣的格式:

{"Messages":[{"Message":["yow!"]},{"Message":["hey!"]}]} 

當我嘗試運行代碼並單擊DivToUpdate,我什麼都看不到......表和行都是空的..這意味着viewmodel沒有正確綁定..當我看着控制檯鍍鉻的E,它說:

NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7 

我開始學習淘汰賽,我會很感激,如果你能告訴我如何解決這一問題?

+0

有,爲什麼你的數據viewModel.model,而不是直接映射到視圖模型根本原因? viewModel是否也包含其他數據?否則,它似乎有點混亂。 –

+0

我想使用淘汰賽,以便頁面可以更新,而無需重新加載或刷新 –

回答

2

你的JSON看起來有點古怪,取出[]圍繞Message的值。我想這應該是一個字符串吧?你如何生成你的JSON?

更新:

當我再次看,我知道你嘗試文本到TR-元素綁定,但TR只能包含TD-元素,所以你需要添加一個td在你的tr中,並將數據綁定到td-element。

試試這個:

<div id="messagesList"> 
     <table> 
      <tbody data-bind="foreach: model.Messages"> 
       <tr> 
        <td data-bind="text: Message"></td> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
+0

AHAHA ...我的朋友和我都在笑...我們需要回到HTML基礎知識...謝謝先生! –

+0

我的榮幸,我錯過了! –