Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在angular ui网格中,如何取消以前注册的事件?_Angularjs_Angular Ui Grid - Fatal编程技术网

Angularjs 在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页面

在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页面糟透了。我想到的方法是将一个函数传递给
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循环期间删除这些侦听器。看看他们的代码,这似乎不成问题。@布莱恩约瑟夫斯皮诺斯,请考虑接受这个答案,如果它奏效了。