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.

  • 相关阅读:
    HTML表单
    CSS等高布局的6种方式
    HTML用户反馈表单
    HTML美化修饰<A>
    sql查询语句 --------一个表中的字段对应另外一个表中的两个字段的查询语句
    jq 表格添加删除行
    js 静止f1到f12 和屏蔽鼠标右键
    手机自适应页面的meta标签
    tp3.2 的验证码的使用
    php多线程抓取网页
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4129911.html
Copyright © 2011-2022 走看看