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

时间:2012-12-18 14:50:12

标签: knockout.js kendo-ui

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

在剑道:

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/

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

1 个答案:

答案 0 :(得分: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/