Angularjs 在angular ui网格中,如何取消以前注册的事件?
在Angular的ui网格中,默认行为是将回调排队, 如何取消/覆盖第一次回调Angularjs 在angular ui网格中,如何取消以前注册的事件?,angularjs,angular-ui-grid,Angularjs,Angular Ui Grid,在Angular的ui网格中,默认行为是将回调排队, 如何取消/覆盖第一次回调 $scope.gridApi.selection.on.rowSelectionChanged($scope, function(row){ alert("Hello #1"); }); $scope.gridApi.selection.on.rowSelectionChanged($scope, function(row){ alert("Hello #2"); }); 老实说,他们的API页面
$scope.gridApi.selection.on.rowSelectionChanged($scope, function(row){
alert("Hello #1");
});
$scope.gridApi.selection.on.rowSelectionChanged($scope, function(row){
alert("Hello #2");
});
老实说,他们的API页面糟透了。我想到的方法是将一个函数传递给
rowSelectionChanged
,然后像这样更改该函数:
PS:我知道它很脏,但它能用
var handler = function(row) {
alert("Hello #1");
}
$scope.gridApi.selection.on.rowSelectionChanged($scope, handler);
然后,您可以稍后更改处理程序:
handler = function(row) {
alert("Hello #2");
}
您必须保留在注册事件时返回的销毁程序,然后执行它们 如下
var hello1Destroyer = $scope.gridApi.selection.on.rowSelectionChanged($scope, function(row){
alert("Hello #1");
});
var hello2Destroyer = $scope.gridApi.selection.on.rowSelectionChanged($scope, function(row){
alert("Hello #2");
});
您可以在某处调用hello1Destroyer()
和hello2Destroyer()
。您可以将其放在范围内,也可以将其放在特定范围内
来源:好主意!我会试试的!var callback=函数(a){alert(#1”);}$scope.GeneralGridApi.selection.on.rowSelectionChanged($scope,callback);回调=函数(a){alert(#2”);}$scope.GeneralGridApi.selection.on.rowSelectionChanged($scope,callback);这成功了!下面是我使用的:var destropher=$scope.GeneralGridApi.selection.on.rowSelectionChanged($scope,function(a){alert(#1”);});破坏者()$scope.GeneralGridApi.selection.on.rowSelectionChanged($scope,function(a){alert(#2”)});//第一次回调被销毁!!!很好-只是为了确保一切正常,检查网格被破坏时是否没有任何错误。销毁期间,ui网格将在scope$destroy循环期间删除这些侦听器。看看他们的代码,这似乎不成问题。@布莱恩约瑟夫斯皮诺斯,请考虑接受这个答案,如果它奏效了。