[AngularJS] Using the Angular scope $destroy event and method

來源:互聯網
上載者:User

標籤:des   style   blog   io   ar   color   sp   for   on   

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.

 

[AngularJS] Using the Angular scope $destroy event and method

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.