J'essaye de lier un ViewModel à une source de données de Kendo qui à son tour est donnée à une grille de Kendo. Rien de trop chic à ce stade.La liaison MVVM à une grille de Kendo est TRÈS lente?
Cela fonctionne en quelque sorte mais est très lent! J'ai une alerte m'informant que j'ai reçu mes données json (700 lignes) en 2 secondes, mais cela prend environ 15 secondes pour mettre à jour le viewmodel.
Qu'est-ce que je fais mal?
Merci
$(document).ready(function() {
// create the viewmodel we use as the source for the list
var viewModel = kendo.observable({
items: [],
total: function() {
return this.get("items").length;
}
});
var dataSource2 = new kendo.data.DataSource({
data: viewModel,
pageSize: 50
});
// create the grid
$("#grid").kendoGrid({
dataSource: dataSource2,
height: 500,
scrollable: {
virtual: true
},
columns: [
{ field: "ID_ORDER", title: "ID", width: 80 },
{ field: "CREATION_DATE", title: "Creation Date" },
{ field: "STATUS", title: "STATUS", width: 80 },
** more columns (around 10) **
]
});
// pass this on to initialise
APPS.View.Orders.Initialise(viewModel);
});
Puis dans mon tapuscrit je traite l'appel INITIALISATION où le viewmodel est passé dans:
module APP.View.Orders {
export var _Scope: string = "Orders";
var _viewModelOrders: any;
export var Initialise = function (viewModelOrders: any) {
_viewModelOrders = viewModelOrders;
var orderdetails = {
userid: APP.Core.userID,
context: "DEAL"
};
// retrieve all orders
$.getJSON("/api/omsapi/GetOrders", orderdetails, function (mydata) {
try {
alert("item count (1): " + mydata.length);
jQuery.each(mydata, function() {
var newItem = this;
_viewModelOrders.items.push(newItem);
});
alert("item count (2): " + _viewModelOrders.items.length);
}
catch (e) {
alert(e.message);
}
});
}
}
Pourquoi les gens votent cette baisse? – Marcel
Vous devez utiliser le transport: read of DataSource pour obtenir vos données. –
Je ne pense pas que le Kendo DataSource pour le transport soit exactement l'idéal. Vous devez définir le schéma chaque fois que vous attendez quelque chose du serveur. Le plug-in Knockout-Mapping est beaucoup plus efficace pour les "développeurs" lorsque nous voulons juste obtenir quelque chose à l'écran. La source de données Kendo prend trop de temps pour le configurer afin que tout fonctionne comme prévu. C'est juste ma propre opinion à ce sujet. –