Kendo-Knockout:使用带有kendo数据源的knockout视图模型

Mdb*_*Mdb 4 kendo-ui knockout.js

我正在使用Kendo,Knockout和kendo-knockoutjs库进行一些实验.我想使用带有kendo数据源的knockout视图模型并将其绑定到kendo网格小部件.

在剑道:

HTML:

<div id="main">
    <div id="reportGrid" data-bind="source: gridDataSource"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

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

显然,这不起作用,因为knockoutjs没有source约束力.是否可以创建自定义绑定命名,source以便当前示例可以工作?任何有关工作代码的帮助将不胜感激.谢谢!

RP *_*yer 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"}]}
});
Run Code Online (Sandbox Code Playgroud)

然后,绑定像:

<div id="reportGrid" data-bind="kendoGrid: { data: undefined, dataSource: gridDataSource }"></div>
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/rniemeyer/6SEzp/