Javascript 剑道网格数据绑定是递归的
我有一个带数据绑定函数集的kendoGrid 下面是我的代码示例,在数据绑定中有一些更新UI视图的集合。这个问题是,如果我将调试器放在第二行(var pageData…),我可以看到.set再次触发dataBound函数。我假设函数应该运行一次,并且.sets不会重新触发它 如果你知道我做错了什么,请帮忙。谢谢Javascript 剑道网格数据绑定是递归的,javascript,jquery,kendo-ui,grid,kendo-grid,Javascript,Jquery,Kendo Ui,Grid,Kendo Grid,我有一个带数据绑定函数集的kendoGrid 下面是我的代码示例,在数据绑定中有一些更新UI视图的集合。这个问题是,如果我将调试器放在第二行(var pageData…),我可以看到.set再次触发dataBound函数。我假设函数应该运行一次,并且.sets不会重新触发它 如果你知道我做错了什么,请帮忙。谢谢 function() { var pageData = grid.dataSource.data(); $.each(pageData, function(index,
function() {
var pageData = grid.dataSource.data();
$.each(pageData, function(index, row){
if (row.Id == cachedRowWithChanges.Id) { //example
row.set("CartTotal", cachedRowWithChanges.CartTotal);
}
});
}
通过
set()
设置数据项值会触发网格数据源实例的change
事件,从而导致网格重新绑定并显示其数据的最新状态
防止多个数据绑定
事件触发的方法是:
- 改用
数据绑定
事件
- 通过直接设置器而不是API更新数据项:
row.CartTotal = cachedRowWithChanges.CartTotal; row.dirty = true;
- 如果希望通过内置的Kendo UI CRUD操作持久化对远程数据服务的更改,则需要上面的第二行
通过
set()
设置数据项值会触发网格数据源实例的change
事件,从而导致网格重新绑定并显示其数据的最新状态
防止多个数据绑定
事件触发的方法是:
- 改用
数据绑定
事件
- 通过直接设置器而不是API更新数据项:
row.CartTotal = cachedRowWithChanges.CartTotal; row.dirty = true;
- 如果希望通过内置的Kendo UI CRUD操作持久化对远程数据服务的更改,则需要上面的第二行
您可以移动逻辑来更改数据源的事件
dataSource: {
change: function(e) {
// data will have new data source
var data = this.data();
}
}
您可以移动逻辑来更改数据源的事件
dataSource: {
change: function(e) {
// data will have new data source
var data = this.data();
}
}
为了防止无限递归,可以在网格中使用简单的全局变量或自定义属性,如下所示:
function(){
如果(!这个忙){
这是。uuu busy=true;
var pageData=grid.dataSource.data();
$.each(页面数据,函数(索引,行){
如果(row.Id==cachedRowWithChanges.Id){//示例
行集合(“CartTotal”,cachedRowWithChanges.CartTotal);
}
});
这是.\uuu busy=false;
}
}
为了防止无限递归,可以在网格中使用简单的全局变量或自定义属性,如下所示:
function(){
如果(!这个忙){
这是。uuu busy=true;
var pageData=grid.dataSource.data();
$.each(页面数据,函数(索引,行){
如果(row.Id==cachedRowWithChanges.Id){//示例
行集合(“CartTotal”,cachedRowWithChanges.CartTotal);
}
});
这是.\uuu busy=false;
}
}
如果我使用数据绑定,则函数中的集合会重复调用数据绑定,从而使该建议等效于数据绑定。如果我不使用,则显示的数据不会更新。如果我使用数据绑定,则函数中的集合会重复调用数据绑定,从而使该建议等效于数据绑定。如果我不使用,则设置显示的数据未更新。