`
huangyongxing310
  • 浏览: 503119 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

AngularJs框架下controller间的传值方法

阅读更多
AngularJs框架下controller间的传值方法



第一种方式
angularJS中默认情况下,当前作用域中无法找到某个属性时,就会在父级作用域中进行查找,若找不到直至查找到$rootScope。
如果在$rootScope中也无法找到程序依旧运行,但视图不会更新。

//Javascript
app.controller('ParentController', function($scope) {
$scope.person = {greeted: false};
});
app.controller('ChildController', function($scope) {
$scope.sayHello = function() {
$scope.person.name = 'Ari Lerner';
};
});
//HTML
<div ng-controller="ParentController">
<div ng-controller="ChildController">
<a ng-click="sayHello()">Say hello</a>
</div>
{{ person }}
</div>
//result
{"greeted":false, "name": "Ari Lerner"}




第二种方式
$on、$emit和$broadcast使得event、data在controller之间的传递变的简单
$emit只能向parent controller传递event与data
$broadcast只能向child controller传递event与data
$on用于接收event与data //

JavaScript
app.controller('ParentController', function($scope) {
$scope.$on('$fromSubControllerClick', function(e,data){
console.log(data); // hello
});
});
app.controller('ChildController', function($scope) {
$scope.sayHello = function() {
$scope.$emit('$fromSubControllerClick','hello');
};
});
//HTML
<div ng-controller="ParentController">
<div ng-controller="ChildController">
<a ng-click="sayHello()">Say hello</a>
</div>
</div>




第三种方式
利用angularJS中service单例模式的特性,服务(service)提供了一种能在应用的整个生命周期内保持数据的方式,
能够在控制器之间进行通信,且能保证数据的一致性。

JavaScript
var myApp = angular.module("myApp", []);
myApp.factory('Data', function() {
return {
name: "Ting"
}
});
myApp.controller('FirstCtrl', function($scope, Data) {
$scope.data = Data;
$scope.setName = function() {
Data.name = "Jack";
}
});
myApp.controller('SecondCtrl', function($scope, Data) {
$scope.data = Data;
$scope.setName = function() {
Data.name = "Moby";
}
});

分享到:
评论

相关推荐

    对angularjs框架下controller间的传值方法详解

    总结来说,AngularJS中Controller间的通信主要有三种方式:作用域继承、事件广播(`$on`、`$emit`、`$broadcast`)以及服务。根据项目需求和性能考虑,可以选择最适合的方式来实现不同Controller之间的数据交互。在...

    angularjs框架的仿卷皮网

    本项目“angularjs框架的仿卷皮网”就是一个典型的SPA实例,它展示了AngularJS在构建复杂Web应用时的能力,包括购物车功能、页面间数据传递以及懒加载等特性。 **1. AngularJS核心概念** AngularJS的核心是MVC...

    angularjs路由传值$routeParams详解

    在进行路由设计时,路由传值是经常需要处理的一个功能,本文将重点介绍 AngularJS 中路由传值的使用方法和细节,特别是如何使用 $routeParams 服务。 首先,要使用 AngularJS 的路由功能,需要先加载 AngularJS 库...

    angularjs1.5 组件内用函数向外传值的实例

    AngularJS是一款流行的前端JavaScript框架,它主要用于创建单页应用程序。1.5版本的AngularJS在组件化方面做了进一步的增强和改进。在AngularJS中,组件是由控制器和模板构成的,是实现数据和视图之间交互的一个重要...

    angular中子控制器向父控制器传值的实例

    在AngularJS框架中,通信是应用中不可或缺的一部分,特别是在处理控制器之间的数据传递时。本文将深入探讨如何在Angular中实现子控制器向父控制器传递值的实例。 首先,我们需要理解Angular中的控制器(Controller...

Global site tag (gtag.js) - Google Analytics