2012-12-18 69 views
4

我正在做一些Kendo,Knockout和kendo-knockoutjs庫的實驗。我想使用kendo數據源的knockout視圖模型並將其綁定到kendo網格小部件。Kendo-Knockout:使用kendo datasource的挖空視圖模型

在劍道:

HTML:

<div id="main"> 
    <div id="reportGrid" data-bind="source: gridDataSource"></div> 
</div> 

的javascript:

var billingReportViewModel = kendo.observable({ 
    gridDataSource: new kendo.data.DataSource({data:[{name:"Apple", color:"green"},{name:"Banana", color:"yellow"}]}) 
}); 

$("#reportGrid").kendoGrid(); 

kendo.bind($("#main"), billingReportViewModel); 

http://jsfiddle.net/zeQMT/71/

我想要完成的任務:

html與上面的例子相同。

的javascript:

var billingReportViewModel = ko.observable({ 
    gridDataSource: new kendo.data.DataSource({data:[{name:"Apple", color:"green"},{name:"Banana", color:"yellow"}]}) 
}); 

$("#reportGrid").kendoGrid(); 


ko.applyBindings(billingReportViewModel); 

http://jsfiddle.net/zeQMT/72/

Obviuosly,這是行不通的,因爲knockoutjs沒有source結合。是否可以創建名爲source的自定義綁定,以便當前的示例可以工作?任何工作代碼的幫助將不勝感激。謝謝!

回答

5

我開始一個分支前一段來處理在kendo.data.DataSource參考直接傳遞,但從來沒有完成修復:https://github.com/rniemeyer/knockout-kendo/issues/6

如果有興趣的話,我會試圖讓這個解決。

否則,您可以在綁定中定義dataSource(或傳遞一個對象)。像:

var billingReportViewModel = ko.observable({ 
    gridDataSource: {data:[{name:"Apple", color:"green"},{name:"Banana", color:"yellow"}]} 
}); 

然後,綁定,如:

<div id="reportGrid" data-bind="kendoGrid: { data: undefined, dataSource: gridDataSource }"></div> 

樣品:http://jsfiddle.net/rniemeyer/6SEzp/

+0

我很想爲這個以復加。數據源方案的定義在解析數字(例如貨幣,有效數字)和日期時非常重要! :-) –

+0

如何獲得當前在kendoui DataSource中的項目的knockoutjs observableArray?作爲數據源頁面和過濾器和排序,淘汰賽observableArray會改變... – t316

+0

@ RPNiemeyer是這樣解決?我似乎無法得到上面的例子工作。將數據設置爲未定義,並將數據源設置爲viewModel上的屬性對我沒有任何幫助。 – Jacques

相關問題