zoukankan      html  css  js  c++  java
  • [AngularJS] Using the Angular scope $destroy event and method

    With Angular scopes, you have access to a $destroy event that can be used to watch $scope events. This is used for cleanup, and gives you a final opportunity to access any data on a scope. Scopes also have a (rarely used) $destroy method that allows you to manually destroy a scope.

    <!DOCTYPE html>
    <html>
    <head lang="en">
      <meta charset="UTF-8">
      <title></title>
      <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css"/>
    
      <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.18/angular.js"></script>
      <script src="app.js"></script>
    </head>
    <body ng-app="demo" ng-init="isToggled = true">
    
    <div ng-if="isToggled">
    
      <div ng-controller="MyCtrl as my">
        Simple Form
        <input type="text" ng-model="my.person.firstName"/>
        <input type="text" ng-model="my.person.lastName"/>
        Welcome, {{ my.person.firstName }} {{ my.person.lastName }}
        <button ng-click="my.click()">Toggle</button>
      </div>
    
      <my-directive></my-directive>
    
    </div>
    
    <hr/>
    
    </body>
    </html>
    angular.module("demo", [])
    
        .factory("person", function () {
            return {
                firstName: "John",
                lastName: "Lindquist"
            }
        })
    
        .controller("MyCtrl", function ($scope, person) {
            var my = this;
            my.person = person;
    
            my.click = function () {
                $scope.$destroy();
            }
    
        })
    
        .directive("myDirective", function () {
            return {
                restrict: "E",
                scope: {},
                template: "<div style='border: 1px solid black'>My Directive</div>",
                link: function (scope) {
                    scope.$on("$destroy", function () {
                        console.log("directive destroy");
                    })
                }
            }
        })

    When you toggle ng-if, actually it triggle $scope.$destory. 

    Once $destory() is triggered, scope is destoried, no event and binding to the scope any more.

  • 相关阅读:
    python学习之控制流1
    python学习之字符串转换
    python学习之数据类型与运算符号
    python之获取微信好友列表并保存文档中
    python之微信自动发送消息
    python之微信好友统计信息
    java并发编程--AtomicInteger
    java.time学习
    chrome插件
    classpath和classpath*
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4129911.html
Copyright © 2011-2022 走看看