1
我習慣從ASP.NET中加載部分視圖和用戶控件,並根據請求加載一些數據。在看到Knockout組件後,我試圖弄清楚如何做與文檔類似的事情,但無法弄清楚。通過AJAX調用將數據加載到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嗎?
我已經知道如何將數據推入我的viewmod el或者數組,我在問一個更進一步的問題,並將這個功能包裝在一個組件中,以便將數據按需加載到Knockout 3.2組件中 – dgarbacz 2014-10-09 12:45:54
我真的不知道組件如何增加值...也許你的想法是延伸? http://knockoutjs.com/documentation/extenders.html你可以創建一個服務,接受一個json的模式,然後你可以將觀察者附加到這個模式的端點上,然後將工作委託給服務來檢索數據,自動將它放入VM中?你可以簡單地做一個擴展,看起來像這樣:this.name = ko.observable(one).extend({jsonExt:{jsonParam:'people',mode:'foreach'}}); – 2014-10-09 20:56:50
這可以做一些事情,如調用服務並註冊您的observable,以便每次調用更新數據時都可以使用,還可以通過擴展訂閱observable以自動發佈有關更改的數據。 – 2014-10-09 20:57:54