84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
angular移除指令內容後,它的監聽還在控制器的 $scope 上,要怎麼移除呢?程式碼如下:
删除内容 查看作用域 输入内容:
如果我直接
$scope.$$watchers = [];
把控制器上的
$scope.$watch("xxx",function(){ console.log("xxx"); });
也移除了,要如何移除指令時連同它的監聽也去掉呢?
人生最曼妙的风景,竟是内心的淡定与从容!
呼叫$scope.$watch()或$scope.$on()方法后,都会返回一个函数引用,用于移除监听。了解详细信息,可以查看 Angular $rootScope 官方文档。另外若想了解$broadcast、$on、$emit使用方法,可以參考 - angularjs的事件 $broadcast and $emit and $on 這篇文章。
$scope.$watch()
$scope.$on()
$broadcast、$on、$emit
$scope.del = function () { document.getElementById("content").innerHTML = ""; $scope.$broadcast('destroySpan'); }; // spanC 指令link函数 link: function (scope, element, attrs) { var unwatch = scope.$watch("insert",function(n){ console.log("asd"); element[0].innerHTML = n; }); scope.$on('destroySpan', function() { unwatch(); }); }
指令:
var clear = scope.$watch("insert",function(n){ console.log("asd"); element[0].innerHTML = n; }); $scope.$on('$destroy', function() { clear(); });
呼叫
$scope.$watch()
或$scope.$on()
方法后,都会返回一个函数引用,用于移除监听。了解详细信息,可以查看 Angular $rootScope 官方文档。另外若想了解$broadcast、$on、$emit
使用方法,可以參考 - angularjs的事件 $broadcast and $emit and $on 這篇文章。指令: