我的代码是这样的:
<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 时,我什么也没看到......表和行为空。.这意味着视图模型未正确绑定。当我看着Chrome的控制台时,它说:
NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7
我开始学习淘汰赛,如果您能告诉我如何解决这个问题,我将不胜感激......
您的 JSON 看起来有点奇怪,请删除消息值周围的 []。我想它应该是一个字符串吧?您如何生成 JSON?
更新:
当我再次查看它时,我意识到您尝试将文本绑定到 tr 元素,但 tr 只能包含 td 元素,因此您需要在 tr 中添加一个 td 并将数据绑定到 td 元素。
试试这个:
<div id="messagesList">
<table>
<tbody data-bind="foreach: model.Messages">
<tr>
<td data-bind="text: Message"></td>
</tr>
</tbody>
</table>
</div>