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);
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);
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 № 1Od 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/