KnockoutJS:ko.mapping.fromJS问题

我的JS:

<script type="text/javascript"> function DictionaryEntry() { var self = this; self.Simplified = ko.observable(""); self.Traditional = ko.observable(""); self.Phonetic = ko.observable(""); self.Definition = ko.observable(""); } function DictionaryModel() { var self = this; self.entries = ko.observableArray([]); } var viewModel = new DictionaryModel(); viewModel.update = function () { var self = this; var f = $("#fSearch"); $.ajax({ url: f.attr('action'), type: f.attr('method'), data: f.serialize(), success: function (result) { self.entries = ko.mapping.fromJS(result, viewModel); } }); return false; } ko.applyBindings(viewModel); </script>

表HTML:

<table class="table table-striped"> <thead> <tr> <th>@T("Simplified")</th> <th>@T("Traditional")</th> <th>@T("Phonetic")</th> <th>@T("Definition")</th> </tr> </thead> <tbody data-bind="foreach: entries"> <tr> <td data-bind="text: Simplified"></td> <td data-bind="text: Traditional"></td> <td data-bind="text: Phonetic"></td> <td data-bind="text: Definition"></td> </tr> </tbody> </table>

这会触发更新按钮..搜索词典并返回结果以替换当前什么是表:

<input type="submit" value="Search" class="btn" data-bind="click: update" />

在我的操作方法,这是返回什么:

return Json(new { // here list is a List<T> with the 4 properties to display in UI entries = list, IndexOfPage = indexOfPage, SizeOfPage = sizeOfPage, TotalRecords = totalRecords, Pages = (int)Math.Ceiling((double)totalRecords / sizeOfPage) });

我遇到的问题是,它似乎被卡在出于某种原因,一个无限循环。 我把一个断点在动作,我可以看到它再次去那里过岁及以上... ..不断

我究竟做错了什么? 全新的淘汰赛(和不完全在超级无论JS,所以请不要给一个模糊的回答)

--------------解决方案-------------

有一种被称为基因敲除更新回调。

当你调用映射发生了什么事是,它引发的回调(它存在作为视图模型的函数)。 这导致称为你的更新功能,从而导致一个无限循环。

http://knockoutjs.com/documentation/plugins-mapping.html

查找有关部分Customizing object updating using “update”

如果结果有一个条目属性格式这是你的列表,你应该以'ko.mapping.fromJS(结果,视图模型)“。 项设置为结果让你与它自己的项属性的条目属性。

分类:asp.net的MVC 时间:2015-03-15 人气:2
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.590 (s). 10 q(s)