我曾经在ASP.NET中使用一些数据加载部分视图和用户控件。在看到Knockout组件之后,我试图弄清楚如何使用文档做类似的事情,但无法弄清楚。
任何人都可以帮我一个简单的例子来说明如何做一些简单的事情,比如把一张桌子装满数据,然后根据点击的行加载一个Knockout组件?
<tbody data-bind="foreach: unapprovedNotes">
<tr>
<td><a href="#" data-bind="click: fetchNote(id())">Fetch this record</a></td>
</tr>
</tbody>
<div id="note-preview-template">
<client-information params="???"></client-information>
</div>
ko.components.register('client-information', {
viewModel: function(params) {
var self = this;
self.someProperty = params.???
},
template: { element: 'note-preview-template' }
});
self.fetchNote = function(id) {
//AJAX call that would load the data into <client-information>
}
因此,单击该链接将进行AJAX调用以按需加载组件的数据。我不需要在页面加载时加载组件,但是希望在我的应用程序的其他地方重用该组件并采用类似的行为。
是否值得使用组件,还是应该创建第二个包含所有功能的viewmodel?
答案 0 :(得分:0)
只使用Jquery的getJson(假设你向客户端提供json) 一旦你通过那个方法得到数据,就把它应用到你的可观察数组......
好的做法是提取observable的底层数组并逐个推送新值,然后将observable数组标记为mutated
从服务器获得Json之后,这篇文章应该可以帮助您更新可观察数组: Update Knockout.js Observable from JSON