2014-10-08 59 views
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嗎?

回答

0

只是使用jQuery的的getJSON(假設你的JSON提供給客戶端) 一旦你的數據在通過該方法應用到你的觀察到的陣列...

好的做法是提取的基礎數組觀察到的,一個推一個新值然後標記可觀察到的數組突變

一旦從服務器具有JSON的這篇文章應該幫助你更新你觀察到的數組: Update Knockout.js Observable from JSON

+0

我已經知道如何將數據推入我的viewmod el或者數組,我在問一個更進一步的問題,並將這個功能包裝在一個組件中,以便將數據按需加載到Knockout 3.2組件中 – dgarbacz 2014-10-09 12:45:54

+0

我真的不知道組件如何增加值...也許你的想法是延伸? 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

+0

這可以做一些事情,如調用服務並註冊您的observable,以便每次調用更新數據時都可以使用,還可以通過擴展訂閱observable以自動發佈有關更改的數據。 – 2014-10-09 20:57:54

相關問題