您的位置:首页 > Web前端 > AngularJS

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

2014-11-29 06:54 447 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐