angularjs 不同的controller之间值的传递

Sharing data between controllers in AngularJS

I wrote this article to show how it can possible to pass data from one Controller to another one.

There are two ways to do it, using a service or exploiting depending parent/child relation between controller scopes.
In this post, we’ll analyze the last one method.

It is possible to send data from parent controller to a child controller and viceversa.
To transmit data from the FirstController to SecondController, which the scope of the first one is parent to the scope of the second one, it should use $broadcast method in the FirstController.
Here the javascript code:
父传($scope.$broadcast)子接收($scope.$on)
angular.module(‘myApp‘, [])
.controller(‘ParentCtrl‘, [‘$scope‘, function($scope) {
$scope.message = "Child updated from parent controller";

$scope.clickFunction = function() {
$scope.$broadcast(‘update_parent_controller‘, $scope.message);
};
}
])
.controller(‘ChildCtrl‘, [‘$scope‘, function($scope) {
$scope.message = "Some text in child controller";

$scope.$on("update_parent_controller", function(event, message) {
$scope.message = message;
});
}
]);

Here a plunker for a live demo.

Instead, if it need to send data from the SecondController (child) to the FirstController (parent), it should use the $emit method.
Here the javascript code:
子传($scope.$emit)父接收($scope.$on)
angular.module(‘myApp‘, [])
.controller(‘ParentCtrl‘, [‘$scope‘, function ($scope) {
$scope.message = "Some text in parent";
$scope.$on("update_parent_controller", function(event, message){
$scope.message = message;
});

}])
.controller(‘ChildCtrl‘, [‘$scope‘, function ($scope) {
$scope.clickFunction = function() {
$scope.message = "Parent updated";

$scope.$emit(‘update_parent_controller‘, $scope.message);
}

}]);

Here a plunker for a live demo.

Finally, here a little trick where two controller have no parent/child relationship.
It should pass data from one controller through $rootScope and the $broadcast method.
Here the javascript code:
兄弟传($rootScope.$broadcast)兄弟接收($rootScope.$on)
angular.module(‘myApp‘, [])
.controller(‘FirstCtrl‘, [‘$scope‘, ‘$rootScope‘, function($scope, $rootScope) {
$scope.message = "Clicked!";

$rootScope.clickFunction = function() {
$rootScope.$broadcast("Update", $scope.message);
};
}])
.controller(‘SecondCtrl‘, [‘$scope‘,‘$rootScope‘, function($scope,$rootScope) {
$scope.message = "Waiting for a click...";

$rootScope.$on("Update", function(event, message) {
$scope.message = message;
});
}]);

Here a plunker for a live demo.

以上三个Demo 打不开,需要FQ。

时间: 2024-10-03 08:00:52

angularjs 不同的controller之间值的传递的相关文章

DDX和DDV——控件与变量之间值的传递

DoDataExchange由框架调用,作用是交互并且验证对话框数据,主要由(DDX) 和 (DDV)宏实现. 永远不要直接调用这个函数,而是通过UpdateData(TRUE/FALSE)实现控件与变量之间值的传递. 当然你也可以不使用DoDataExchange而完成控件与变量之间值的传递,如: 通过GetWindowText和SetWindowText等等函数完成String变量与Edit控件之间的数据交互. DDX/DDV    通过使用ClassWizard向对话类添加成员变量,你可以

ASP.NET MVC中的两个Action之间值的传递--TempData

一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictionary,顾名思义是一个字典类.TempData在ASP.NET MVC中的作用是:可用于在Action执行过程之间传值.简单的说,你可以在执行某个Action的时候,将数据存放在TempData中,那么在下一次Action执行过程中可以使用TempData中的数据. 如: 1 public Actio

MVC进阶学习--View和Controller之间的数据传递(一)

1.使用ViewData ViewData 的是ControllerBase 的一个属性,是一个数据字典类型的,其实现代码如(这段代码来自asp.net MVC开源项目中源码)下: Code  1 public class ViewDataDictionary : IDictionary<string, object> {  2   3         private readonly Dictionary<string, object> _innerDictionary = ne

MVC进阶学习--View和Controller之间的数据传递(二)

1. 使用Request.Form MVC 将页面简单化,与WebForm中的事件机制完全不同,就和普通的html标签表单提交没有任何区别(当然WebForm中的事件机制其实也是表单提交).在表单提交之后,在Controller action中可以以Request.Form["key"] 的方式获取到值. Code1 <%Html.BeginForm("Index", "Home", FormMethod.Post); %>2   &

activity之间值的传递和返回

activity1传值给activity2,我们可以用Intent.putExtra来实现,还可以用bundle来完成.在此不赘述. 在2返回值给1的时候我们也可以用这样的方式,然后跳转活动,startActivity. 但是,还有一个方法叫setResult(resultCode, intent Data) ,在活动二中使用 Intent i = new Intent(); i.putExtra("data", "this is a message "); set

Angular中Controller之间的信息传递(第二种办法):$emit,$broadcast,$on

此处不做详细讲解,提供一个小例子,看了便懂 <html ng-app=""> <div ng-controller="ctrlController"> <div ng-controller="ctrl1Controller"></div> <div ng-controller="ctrl2Controller"></div> </div> &l

通过$broadcast或$emit在子级和父级controller之间进行值传递

1 通过$broadcast或$emit在controller之间进行值传递,不过这些controller必须是子级或者父级关系, 2 $emit只能向父级parent controller传递事件event与数据data,$broadcast只能向子级child controller传递event与data,$on用于接收event与data. 3 <script> 4 var myapp=angular.module('myapp',[]); 5 myapp.controller('Sel

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>