基本上问题是当我点击它最初显示的链接时,例如 2 条记录在视图中。但是当我关闭页面并再次单击链接时,它假设向我显示来自模型的更新记录,因为我正在调用控制器方法,该方法实习生返回 Json resultData。但它不像它只是将视图列表附加到自身并显示带有 4 条记录的视图。如果我重复打开窗口,它会显示 2、4、8、16 之类的记录...... :(
我的代码如下所示:
文件1.cshtml:
<div id="Section1">
<div>
<span>
<a href="javascript:void(0);" data-bind="click: OnClick">Click here</a>
</span>
</div>
</div>
文件1.js:
var Section1VM = {
OnClick: function () {
$.ajax({
type: 'POST',
url: '/controller/View/',
success: function (resultData) {
initSection2VM(resultData); function declared in File2.js
},
dataType: 'json'
});
}
};
Ko.applybinding (Section1VM , document.getElementById("Section1"))
文件2.js
function initSection2VM(resultData) {
var counter = 0
var Section2VM = {
List: ko.observableArray([]),
ListCount:ko.observable()
};
Section2VM.List([]);
ko.utils.arrayForEach(resultData, function (entry) {
Section2VM.List.push(entry);
counter++;
});
Section2VM.ListCount(counter);
ko.applyBindings(Section2VM , document.getElementById("Section2"));
};
文件2.cshtml
<div class="whiteContent" id="Section2">
<tbody data-bind="foreach: List()">
<tr>
<td><span data-bind="text: SomeDate"></span></td>
<td><span><a href="#" data-bind="attr: { href: SomeLink }, text: SomeNumber">
</a></span></td>
</tr>
</tbody>
</div>
代码说明:
- 单击“单击此处”链接将调用 File1.js 中的“OnClick”
- “OnClick” 将发出 ajax 调用以从控制器获取更新列表。控制器将 Json 结果返回给函数。
- “OnClick”成功后将调用 initSection2VM(resultData); 在 File2.js 中声明并传递 Json 结果数据。
- 将 resultData 推送到 Section2VM.List 然后 ko.applyBindings(Section2VM , document.getElementById("Section2"));
- MeesageCenterPopUpSection 正在加载 file2.cshtml