這個怎麼樣?
http://dojo.telerik.com/@Stephen/aNije
我刪除了K-重新綁定屬性,而不是線了您的setCarsGrid內的數據源()方法:
$scope.setCarsGrid = function() {
var row = this.brandGrid.select();
var brand = this.brandGrid.dataItem(row);
var brandObj=brand.toJSON();
var dataSource = new kendo.data.DataSource({
data: brand.cars,
schema:{
model:{
fields:{
id:{editable:false},
model:{editable:false},
color:{type:"string"}
}
},
parse: function(response) {
$.each(response, function(idx, elem) {
elem.id = elem.id+10;
//if you put a break point here, every time you try to edit 'color' field.. will be stop because datasourse is iterated again
console.log("Grid has been reloaded and the editable field 'color' can be edited :'(the id property has been added +10")
});
return response;
}
}
});
// This first time this is called, the carsGrid has not been initialized, so it doesn't exist.
// But subsequent times, we just need to set the new datasource.
if (this.carsGrid) {
this.carsGrid.setDataSource(dataSource);
}
$scope.carsGridOptions = {
dataSource: dataSource,
selectable:true,
editable: true,
columns: [{
field: "id",
},{
field: "model",
},{
field: "color",
}]
};
}
從本質上講,我只是從設置分離網格初始化網格的DATASOURCE。 第一次通過設置網格選項並設置數據源,然後設置數據源,然後將網格設置爲新的數據源。
這就避免了K-重新綁定的行爲......我相信這是記錄:因爲這些部件是在他們的數據,例如每次改變重新http://docs.telerik.com/kendo-ui/AngularJS/introduction#widget-update-upon-option-changes
這種方法並不適用於數據綁定控件,分頁後的網格。
請注意,我並不真正知道角度,所以可能有更好的方法來組織此代碼,但它的工作原理。
您至少需要提供您的網格定義。更好的是,提供一個指向Kendo Dojo示例的鏈接,展示該問題。 –
謝謝..我已經做到了....這裏是鏈接http://dojo.telerik.com/uYemI/2 –
我真的不知道如何解決它,但它是k-rebind =「 carsGridOptions「導致它...當editCell觸發時,此屬性導致k-rebind啓動,因此setGridOptions觸發重新綁定整個數據源(並重置網格)。您需要找到一種方法,只需將新數據推入網格,而不使用k-rebind(由於某種原因而在編輯時觸發)。所以基本上,每個editCell都會導致網格重新初始化它的dataSource(通過k-rebind映射),從而導致重新讀取。我們不需要那樣做;;) –