$broadcast是父到子的广播
<script src="../angular.js"></script>
<script>
angular.module("app", [])
.controller("child", function($scope) {
$scope.$on("parentChange", function(e, m) {
$scope.change = "changed";
$scope.child = m;
})
})
.controller("parent", function($scope) {
$scope.$watch("parent", function(n, o) {
if (n == o) {
return;
}
$scope.$broadcast("parentChange", n)
})
})
</script>
<body>
<div ng-controller="parent">
Parent: {{parent}}
<input type="text" ng-model="parent">
<div ng-controller="child">
{{change}} Child: {{child}}
</div>
</div>
</body>
$emit是子到父的广播
<script src="../angular.js"></script>
<script>
angular.module("app", [])
.controller("parent", function($scope) {
$scope.$on("childChange", function(e, m) {
$scope.change = "changed";
$scope.parent = m
})
})
.controller("child", function($scope) {
$scope.$watch("child", function(n, o) {
if (n == o) {
return;
}
$scope.$emit("childChange", n)
})
})
</script>
<body ng-controller="parent">
{{change}} Parent: {{parent}}
<div ng-controller="child">
Child: {{child}}
<input type="text" ng-model="child">
</div>
</body>
有几个路由相关的事件如下:
$routeChangeStart : 路由变化之前会触发该事件,有三个参数,分别是AngularJS事件对象、将要跳转路由的url、当前url。
$rootScope.$on('$routeChangeStart', function(evt, next, current) {
//something
});$routeChangeSuccess : 路由成功后触发,三个参数分别为AngularJS事件对象、当前url、上一个url
$routeChangeError : 被拒时触发,三个参数为当前路由信息、上一个路由的信息、错误信息。
$routeUpdate : 如果reloadOnSearch为false,重新使用控制器的实力时触发。