/ / Kendo-Knockout: użyj modelu widoku nokaut ze źródłem danych Kendo - knockout.js, kendo-ui

Kendo-Knockout: używaj modelu widoku nokautu z kendo datasource - knockout.js, kendo-ui

Przeprowadzam eksperymenty z bibliotekami Kendo, Knockout i kendo-knockoutjs. Chcę użyć modelu widoku z nokautem z źródłem danych kendo i powiązać go z widżetem siatki kendo.

W 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/

Co chcę osiągnąć:

HTML jest taki sam jak w powyższym przykładzie.

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/

Oczywiście to nie zadziała, ponieważ knockoutjs nie ma source wiążący. Czy można utworzyć niestandardowe powiązanie o nazwie source aby obecny przykład działał? Każda pomoc związana z działającym kodem będzie bardzo mile widziana. Dzięki!

Odpowiedzi:

5 dla odpowiedzi № 1

Od dawna założyłem oddział do obsługi bezpośredniego przekazywania odwołania do kendo.data.DataSource, ale nigdy nie ukończyłem poprawki: https://github.com/rniemeyer/knockout-kendo/issues/6

Jeśli jest zainteresowanie, mogę spróbować rozwiązać ten problem.

W przeciwnym razie możesz zdefiniować źródło danych w powiązaniu (lub przekazać obiekt). Lubić:

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

Następnie powiąż jak:

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

Próba: http://jsfiddle.net/rniemeyer/6SEzp/