Javascript 在dgrid renderRow之后执行函数
我试图在网格的Javascript 在dgrid renderRow之后执行函数,javascript,dojo,dgrid,Javascript,Dojo,Dgrid,我试图在网格的renderRow事件之后绑定要执行的函数。所以我使用了DOJO的aspect.after,但这里是kicker。这将在确实呈现行之前执行,因此divs\tds尚未出现在屏幕上。因为我确实想使用项目的位置,所以使用dojo/domgeometry返回一个填充了零的对象。如何保证我的函数在行显示完成后执行 在下面你可以找到我称之为JS的地方 aspect.after(grid, 'renderRow', function(row, args) { var ob
renderRow
事件之后绑定要执行的函数。所以我使用了DOJO的aspect.after,但这里是kicker。这将在确实呈现行之前执行,因此divs\tds尚未出现在屏幕上。因为我确实想使用项目的位置,所以使用dojo/domgeometry
返回一个填充了零的对象。如何保证我的函数在行显示完成后执行
在下面你可以找到我称之为JS的地方
aspect.after(grid, 'renderRow', function(row, args) {
var object = args[0];
if (object.type == 'tipo_exec') {
row.className += ' black';
} else if(object.type == 'exec') {
row.className += ' gray';
} else if(object.type == 'ic') {
if ((typeof(object.dep)!='undefined') && (object.dep.length > 0)) {
require(['dojo/dom-geometry','dojo/dom-construct'],
function(domGeom, domConstruct){
console.log(domGeom.position(row));
}
);
}
}
return row;
});
编辑:另一件事,我正在使用树扩展,renderRow发生在单击父对象以展开之后
编辑:这里有更多的信息,以备需要。商店很简单:
store = new Observable(new Memory({'data': data,
'getChildren': function(parent, options){
return this.query({'parent': parent.id}, options);
},
'mayHaveChildren': function(parent){
return parent.hasChildren;
}
}));
网格声明为:
grid = new (declare([OnDemandGrid, Selection, Keyboard, CompoundColumns]))({
'columns': nCols,
'query': { 'parent': undefined },
'store': store
}, gridId);
这是后面的方面的内部
if ((typeof(object.dep)!='undefined') && (object.dep.length > 0)) {
console.log('just before adding the refresh');
on.once(this, 'dgrid-refresh-complete', function(){
console.log('finished refreshing');
require(['dojo/dom-geometry','dojo/dom-construct'],
function(domGeom, domConstruct){
console.log(domGeom.position(node));
}
);
});
}
console.log(“完成刷新”)代码>从不被调用,位置日志也不被调用
网格上有许多列,一对列系在一个合成列上,一个名为colum的树,还有一些其他的。展开树时会调用renderRow
您可以推迟调用domgome.position(行)
,直到发出dgrid refresh complete
事件。您需要包括dojo/on
aspect.after(grid, 'renderRow', function(row, args) {
var object = args[0];
if (object.type == 'tipo_exec') {
row.className += ' black';
} else if(object.type == 'exec') {
row.className += ' gray';
} else if(object.type == 'ic') {
if ((typeof(object.dep)!='undefined') && (object.dep.length > 0)) {
on.once(this, 'dgrid-refresh-complete', function(){
require(['dojo/dom-geometry','dojo/dom-construct'],
function(domGeom, domConstruct){
console.log(domGeom.position(row));
}
);
})
}
}
return row;
});
编辑
更新了JSFIDLE以适应树
您可以推迟调用domgome.position(行)
,直到发出dgrid refresh complete
事件。您需要包括dojo/on
aspect.after(grid, 'renderRow', function(row, args) {
var object = args[0];
if (object.type == 'tipo_exec') {
row.className += ' black';
} else if(object.type == 'exec') {
row.className += ' gray';
} else if(object.type == 'ic') {
if ((typeof(object.dep)!='undefined') && (object.dep.length > 0)) {
on.once(this, 'dgrid-refresh-complete', function(){
require(['dojo/dom-geometry','dojo/dom-construct'],
function(domGeom, domConstruct){
console.log(domGeom.position(row));
}
);
})
}
}
return row;
});
编辑
更新了JSFIDLE以适应树
您可以推迟调用domgome.position(行)
,直到发出dgrid refresh complete
事件。您需要包括dojo/on
aspect.after(grid, 'renderRow', function(row, args) {
var object = args[0];
if (object.type == 'tipo_exec') {
row.className += ' black';
} else if(object.type == 'exec') {
row.className += ' gray';
} else if(object.type == 'ic') {
if ((typeof(object.dep)!='undefined') && (object.dep.length > 0)) {
on.once(this, 'dgrid-refresh-complete', function(){
require(['dojo/dom-geometry','dojo/dom-construct'],
function(domGeom, domConstruct){
console.log(domGeom.position(row));
}
);
})
}
}
return row;
});
编辑
更新了JSFIDLE以适应树
您可以推迟调用domgome.position(行)
,直到发出dgrid refresh complete
事件。您需要包括dojo/on
aspect.after(grid, 'renderRow', function(row, args) {
var object = args[0];
if (object.type == 'tipo_exec') {
row.className += ' black';
} else if(object.type == 'exec') {
row.className += ' gray';
} else if(object.type == 'ic') {
if ((typeof(object.dep)!='undefined') && (object.dep.length > 0)) {
on.once(this, 'dgrid-refresh-complete', function(){
require(['dojo/dom-geometry','dojo/dom-construct'],
function(domGeom, domConstruct){
console.log(domGeom.position(row));
}
);
})
}
}
return row;
});
编辑
更新了JSFIDLE以适应树
@ahmed非常糟糕的主意。setTimeout是在一条评论中提出的,后来被删除。它是,但问题是我想我将不得不求助于它。使用自动刷新直到位置返回非零数据的超时。它像地狱一样笨重,但比nothing@ahmed这是一个非常糟糕的主意。setTimeout是在一条评论中提出的,后来被删除了。是的,但问题是我想我不得不求助于它。使用自动刷新直到位置返回非零数据的超时。它像地狱一样笨重,但比nothing@ahmed这是一个非常糟糕的主意。setTimeout是在一条评论中提出的,后来被删除了。是的,但问题是我想我不得不求助于它。使用自动刷新直到位置返回非零数据的超时。它像地狱一样笨重,但比nothing@ahmed这是一个非常糟糕的主意。setTimeout是在一条评论中提出的,后来被删除了。是的,但问题是我想我不得不求助于它。使用自动刷新直到位置返回非零数据的超时。这是笨重的地狱,但总比没有好weet,去尝试它,并将张贴结果后,它不工作,不幸的。我尝试将dgrid refresh complete
事件连接到grid和grid.domNode(在onDemandList.js上调用),但两个选项都没有被触发。如果有什么不同,这就是网格的声明<代码>声明([OnDemandGrid,Selection,Keyboard,CompoundColumns])
代码已经过测试,可以正常工作。如果((typeof(object.dep)!='undefined')&(object.dep.length>0))中的一个条件不满足,则可能是其中一个条件。否。我在在线前放了一个日志,它被触发了。Domgome控制台没有。您是否在其中一列上使用树扩展进行了\测试?我没有使用树插件,但在尝试之前,您使用的是哪个版本的dgrid和Dojo?我这样问是因为在更高版本中添加了dgrid refresh complete
事件。我目前使用的是dgrid 0.3.11和Dojo 1.9.1Sweet,我将尝试它,并将在它不幸不起作用后在这里发布结果。我尝试将dgrid refresh complete
事件连接到grid和grid.domNode(在onDemandList.js上调用),但两个选项都没有被触发。如果有什么不同,这就是网格的声明<代码>声明([OnDemandGrid,Selection,Keyboard,CompoundColumns])代码已经过测试,可以正常工作。如果((typeof(object.dep)!='undefined')&(object.dep.length>0))中的一个条件不满足,则可能是其中一个条件。否。我在在线前放了一个日志,它被触发了。Domgome控制台没有。您是否在其中一列上使用树扩展进行了\测试?我没有使用树插件,但在尝试之前,您使用的是哪个版本的dgrid和Dojo?我这样问是因为在更高版本中添加了dgrid refresh complete
事件。我目前使用的是dgrid 0.3.11和Dojo 1.9.1Sweet,我将尝试它,并将在它不幸不起作用后在这里发布结果。我尝试将dgrid refresh complete
事件连接到grid和grid.domNode(在onDemandList.js上调用),但两个选项都没有被触发。如果有什么不同,这就是网格的声明<代码>声明([OnDemandGrid,Selection,Keyboard,CompoundColumns])代码已经过测试,可以正常工作。如果((typeof(object.dep)!='undefined')&(object.dep.length>0))中的一个条件不满足,则可能是其中一个条件。否。我在在线前放了一个日志,它被触发了。Domgome控制台没有。您是否在其中一列上使用树扩展进行了\测试?我没有使用树插件,但在尝试之前,您使用的是哪个版本的dgrid和Dojo?我这么问是因为