Angularjs controller之间的通信

刚刚看了网上的一些关于控制器之间的通信;然后结合自己项目做了一些,这里主要做的是二个同级之间的controller通信。

Html:

 1 <html>
 2 <script src="http://apps.bdimg.com/libs/angular.js/1.3.9/angular.min.js"></script>
 3 <body>
 4 <div ng-app="app">
 5      <div ng-controller="childCtr1">name :
 6         <input ng-model="name" type="text"  />
 7     </div>
 8      <div ng-controller="childCtr2">Ctr1 name:
 9          {{ctr1Name}}
10      </div>
11  </div>
12 </body>
13 </html>

上面的html代码设置了2个同级的控制器,现在childCtr2需要childCtr1的参数来显示相关信息,下面是控制器childCtr1的代码:

1 angular.module("app", [])
2 .controller("childCtr1", function ($scope) {
3     $scope.$watch("name",function (){//监听绑定“name",当发生改变时发送消息;
4         //alert("123");
5         $scope.$emit("Ctr1NameChange", $scope.name);//发送名为Ctr1NameChange的消息,值为$scope.name
6     });
7 });

下面是childCtr2的代码:

angular.module("app", [])
.controller("childCtr2", function ($scope) {
    $scope.$on("Ctr1NameChange",//监听有没有名为”Ctr1NameChange“的消息,如果有,则执行下面函数

    function (event, msg) {
        console.log("childCtr2", msg);
        $scope.ctr1Name = msg;
    });
});

以上是针对控制器分离的文件写的不同形式;当然也可以将他们合并到一个页面

 1 angular.module("app", [])
 2 .controller("childCtr1", function ($scope) {
 3     $scope.$watch("name",function (){
 4         //alert("123");
 5         $scope.$emit("Ctr1NameChange", $scope.name);
 6     });
 7 }).controller("childCtr2", function ($scope) {
 8     $scope.$on("Ctr1NameChange",
 9
10     function (event, msg) {
11         console.log("childCtr2", msg);
12         $scope.ctr1Name = msg;
13     });
14 });

还有很多控制器之间的通信方法,包括server的factory,可以参考:http://jsbin.com/hopazo/5/edit?html,css,js,output

时间: 2024-08-05 02:24:02

Angularjs controller之间的通信的相关文章

AngularJS 中 Controller 之间的通信

用 Angular 进行开发,基本上都会遇到 Controller 之间通信的问题,本文对此进行一个总结. 在 Angular 中,Controller 之间通信的方式主要有三种: 1)作用域继承.利用子 Controller 控制父 Controller 上的数据.(父 Controller 中的数据要为引用类型,不能是基本类型,原因参见 AngularJS中的作用域 一文) 2)注入服务.把需要共享的数据注册为一个 service,在需要的 Controller 中注入. 3)基于事件.利用

angularJS中directive与controller之间的通信

当我们在angularJS中自定义了directive之后需要和controller进行通讯的时候,是怎么样进行通讯呢? 这里介绍3种angular自定义directive与controller通信的指令. 1.指令作用域中的"@" 作用:把当前属性作为字符串传递实现指令与html页面元素关联. 1 <!DOCTYPE html> 2 <html ng-app="demoapp"> 3 <head lang="en"

AngularJS(三)——在多个AngularJS controller之间共享数据

在MVC中,为了方便维护,针对不同业务会使用不同的controller.有时我们需要在不同的controller中共享数据,本文旨在解决这一问题. 1. 使用$rootScope直接绑定 AngularJS中有一个$rootScope对象,它是AngularJS中最接近全局作用域的对象,是所有$scope对象的最上层,可以简单理解为BOM中的window对象或Node.js中的global对象.最简单的方式是直接将要共享的数据绑定到$rootScope对象中: <!DOCTYPE html>

【转】Angularjs Controller 间通信机制

在Angularjs开发一些经验总结随笔中提到我们需要按照业务却分angular controller,避免过大无所不能的上帝controller,我们把controller分离开了,但是有时候我们需要在controller中通信,一般为比较简单的通信机制,告诉同伴controller我的某个你所关心的东西改变了,怎么办?如果你是一个javascript程序员你会很自然的想到异步回调响应式通信—事件机制(或消息机制).对,这就是angularjs解决controller之间通信的机制,所推荐的唯

angularJS中directive与directive 之间的通信

上一篇讲了directive与controller之间的通信:但是我们directive与directive之间的通信呢? 当我们两个directive嵌套使用的时候怎么保证子directive不会被父directive替换覆盖:及当子directive需要用到父directive中controller某个变量或者方法的时候 怎么实现两个directive之间的通信的. 这里主要讲directive的两个属性: 1.transclude 2.require html 1 <!DOCTYPE ht

angularJS的controller之间如何正确的通信

AngularJS中的controller是个函数,用来向视图的作用域($scope)添加额外的功能,我们用它来给作用域对象设置初始状态,并添加自定义行为. 当我们在创建新的控制器时,angularJS会帮我们生成并传递一个新的$scope对象给这个controller,在angularJS应用的中的任何一个部分,都有父级作用域的存在,顶级就是ng-app所在的层级,它的父级作用域就是$rootScope. 每个$scope的$root指向$rootScope, $cope.$parent指向父

(转) angularJS的controller之间如何正确的通信

AngularJS中的controller是个函数,用来向视图的作用域($scope)添加额外的功能,我们用它来给作用域对象设置初始状态,并添加自定义行为. 当我们在创建新的控制器时,angularJS会帮我们生成并传递一个新的$scope对象给这个controller,在angularJS应用的中的任何一个部分,都有父级作用域的存在,顶级就是ng-app所在的层级,它的父级作用域就是$rootScope. 每个$scope的$root指向$rootScope, $cope.$parent指向父

跟我学AngularJs:Controller数据共享、继承、通信使用具体解释

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主讲了AngularJs中的Controller中数据共享.继承.通信的具体使用 本教程使用AngularJs版本号:1.5.3 AngularJs GitHub: https://github.com/angular/angular.js/ AngularJs下载地址:https://angularjs.org/ 一.controller基础与使用方法 AngularJS中的co

跟我学AngularJs:Controller数据共享、继承、通信使用详解

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主讲了AngularJs中的Controller中数据共享.继承.通信的详细使用 本教程使用AngularJs版本:1.5.3 AngularJs GitHub: https://github.com/angular/angular.js/ AngularJs下载地址:https://angularjs.org/ 一.controller基础与用法 AngularJS中的contr