文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php教程>浅谈angular控制器通信的4种方式

浅谈angular控制器通信的4种方式

时间:2021-05-20  来源:互联网

今天PHP爱好者给大家带来本篇文章给大家介绍一下angular控制器通信的4种方式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

 浅谈angular控制器通信的4种方式

首先概括一下angular控制器通信的4种方式:

  • 作用域继承。

  • 通过$scope广播事件。

  • 事件发射器模块。

  • 服务。

1、作用域的继承

子作用域可以访问声明在它们的祖先作用域中的变量和函数。

<p ng-controller="Controller1">
<p ng-controller="Controller2">
this prints '42':{{answer}}
</p>
</p>
m.controller('Controller1', function ($scope) {
$scope.answer = 42;
});
m.controller('Controller2', function ($scope) {
console.log($scope.answer);
});

2、通过$scope广播事件

$emit调用可以向作用域上方冒泡,$broadcast将向子孙作用域传播,$on可以注册监听器。

<p ng-controller="Controller1">
<p ng-controller="Controller2">

</p>
</p>
m.controller('Controller1', function ($scope) {
$scope.$on('ping', function (){
console.log('pong');
});
$scope.$broadcast('broadcast');
});
m.controller('Controller2', function ($scope) {
$scope.$emit('ping');
$scope.$on('broadcast', function (){
console.log('broadcast');
});
});

3、事件发射器模块event-emitter

event-emitter模块工作方式类似于作用域发射器,它们有3个关键的区别:

  • event-emitter是独立于作用域的,所以在无法访问作用域的服务中使用它是非常理想的。

  • 将使用的函数被命名为.on(),.emit()。

  • 没有对应的$broadcast()函数。

<script type="text/javascript" src="angular.js"></script>
<script type="text/javascript" src="event-emitter.js"></script>
<script type="text/javascript">
var app = angular.module('app', []);

app.factory('userService', function ($timeout, $window) {
var emitter = $window.emitter();
var user = {};

//模拟http错误
$timeout(function () {
user.emit('error', 'Could not connect to server');
}, 1000);

return user;
});

app.factory('profileService', function (userService) {
var ret = {
user: userService,
};

userService.on('error', function () {
console.log('get error');
});

return ret;
});
</script>

4、最常用的通信是服务

因为服务是单例,所以在任何组件内改变服务的值都将影响其他组件,用法很简单,只要把服务列为依赖就可以了,如以上代码所示。

以上就是浅谈angular控制器通信的4种方式的详细内容,更多请关注php爱好者其它相关文章!

相关阅读更多 +
最近更新
排行榜 更多 +
元梦之星最新版手游

元梦之星最新版手游

棋牌卡牌 下载
我自为道安卓版

我自为道安卓版

角色扮演 下载
一剑斩仙

一剑斩仙

角色扮演 下载