捕获指令删除

ngRepeat 是流行的指令并且非常有用。
我们可以随心所欲地使用它。
我们可以创建一个指令并使用 ngRepeat 使用该指令类型的对象。
通过这种方式,我们可以使用很多对象。

让我们看一个例子:

<script>
    angular.module('MyModule',[...])
        .directive('myDirective',function(){...});
</script>
...
<my-directive ng-repeat="item in items"></my-directive> //if you create a directive with "Restrict: E"

现在让我们想象一下,我们想知道指令被删除的位置(如果我们对它们使用 ngRepeat 并从数组中删除任何项目)。
我们可能认为为什么我需要知道指令何时被删除。
举个例子。
数据库中有任何点并希望将其绘制在地图上。
我们将从数据库中读取该数据,将其发送到 AngularJs,AngularJs 必须绘制它们。

我们可以创建一个名为 Marker 的指令,并在数据上使用它。
它看起来像这样:

<script>
    angular.module('Map', [...])
        .directive('marker', function(){...}) //this directive will draw the markers on the map
</script>
...
<marker ng-repeat="marker in dbMarkers"></marker> //markers on the map

假设我们想删除任何项目(标记)。
我们只能删除它在数组中的项目,ngRepeat 会为我们完成。
但是标记不会从地图上移除,我们会看到不确定。
我们是否删除了该项目?
你删除了正确的项目吗?
那么该怎么办?

这是解决方案。
每个 DOM 项目(指令)都有事件 $destroy。
该事件在项目将被删除之前运行。
所以你可以像这样使用它

angular.module('MyModule')
    .drective('marker', function(){
        return {
          ...
          link: function(scope,el,...){
             el.bind('$destroy',function(){
                  //do whatever you want
                  //for example marker.setMap(null) to remove the marker from the map.
             })
          }
        }
    })
如何捕捉指令删除

javascript 的 AngularJs 框架是一个流行且非常有用的东西。
如果我们是 AngularJs 开发人员,我们可能知道 AngularJs 指令。
AngularJs 指令让我们通过“OOP”模式更多地使用代码。
它就像“类”。
我们可以创建一个指令并使用该指令类型的大量对象。

由于 AngularJS 现在是一个已弃用的框架,我们可以改用 JavaScript 现代框架,如 Vuejs、React 和 Angular。

如我们所见,ngRepeat、ngClick、ngShow、ngHide 等。
所有这些都是 AngularJs 指令。
让我们谈谈 ngRepeat 指令。

日期:2020-06-02 22:18:46 来源:oir作者:oir