如何让controller之间共享数据呢?大致是让不同controller中的变量指向同一个实例。

通过service创建一个存放共享数据的对象。

.service("greeting", function Greeting(){
var greeting = this; greeting.message = "default";
})

让不同的controller中的变量指向Greeting这个实例。

.controller('FirstCtrl', function FirstCtrl(greeting){
var first = this;
first.greeting = greeting;
})
.controller('SecondCtrl', function SecondCtrl(greeting){
var second = this;
second.greeting = greeting;
})

以上,FirstCtrl和SecondCtrl中的greeting变量都指向Greeting这个实例。这样FirstCtrl和SecondCtrl共享同一个Greeting实例。

具体实现,先看文件结构:
templates/
.....first.html
.....second.html
app.js
index.html

index.html

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="../../node_modules/bootstrap/dist/css/bootstrap.min.css"/>
<style>
body{
padding:20px;
}
</style>
</head>
<body> <div class="container">
<ui-view></ui-view>
</div> <script src="../../node_modules/angular/angular.min.js"></script>
<script src="../../node_modules/angular-ui-router/build/angular-ui-router.min.js"></script>
<script src="app.js"></script>
</body>
</html>

以上,ui-view是用来呈现不同的视图。

app.js

angular.module('app',['ui.router'])
.config(function config($stateProvider){
$stateProvider.state('index',{
url:"",
controller: "FirstCtrl",
controllerAs: "first",
templateUrl:"templates/first.html"
}); $stateProvider.state('second',{
url:"/second",
controller:"SecondCtrl as second",
templateUrl: "templates/second.html"
});
})
.service("greeting", function Greeting(){
var greeting = this; greeting.message = "default";
})
.controller('FirstCtrl', function FirstCtrl(greeting){
var first = this;
first.greeting = greeting;
})
.controller('SecondCtrl', function SecondCtrl(greeting){
var second = this;
second.greeting = greeting;
})

以上,在angular-ui-router.min.js中封装了ui.router这个module,需要依赖它。

first.html

<input type="text" ng-model="first.greeting.message"/>

<div ng-class="first.greeting.message">
{{first.greeting.message}} {{'world'}}
</div> <div ui-sref="second">Go to second</div>

以上,文本框通过ng-model和first.greeting.message进行了双向绑定,即同Greeting这个实例的message进行了双向绑定。

second.html

<h1>{{second.greeting.message}}</h1>

当更改first.html中文本框的值,这里的值也会相应变化。

让AngularJS的controllers之间共享数据的更多相关文章

  1. 学习笔记4_ServletContext(重要整个Web应用的动态资源之间共享数据)

    ServletContext(重要) 一个项目只有一个ServletContext对象! 我们可以在N多个Servlet中来获取这个唯一的对象,使用它可以给多个Servlet传递数据! 与天地同寿!! ...

  2. Android应用程序组件Content Provider在应用程序之间共享数据的原理分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6967204 在Android系统中,不同的应用 ...

  3. VC++共享数据段实现进程之间共享数据

    当我写了一个程序,我希望当这个程序同时运行两遍的时候,两个进程之间能共享一些全局变量,怎么办呢?很简单,使用VC\VC++的共享数据段.; #pragma data_seg()//恢复到正常段继续编程 ...

  4. 多线程(四) 实现线程范围内模块之间共享数据及线程间数据独立(Map集合)

    多个线程访问共享对象和数据的方式 1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做. 2.如果每个线程执行的代码 ...

  5. 多线程(三) 实现线程范围内模块之间共享数据及线程间数据独立(ThreadLocal)

    ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.JDK 1.2的版本中就提供java.lang.ThreadLocal,使用这个工具类可以很简洁地编写出优美的多线程程序,Threa ...

  6. Python 进程之间共享数据

    最近遇到多进程共享数据的问题,到网上查了有几篇博客写的蛮好的,记录下来方便以后查看. 一.Python multiprocessing 跨进程对象共享  在mp库当中,跨进程对象共享有三种方式,第一种 ...

  7. Python 进程之间共享数据(全局变量)

    进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的值,主进程跟着改变 if __name__= ...

  8. 面试之路(13)-android apk之间共享数据的方式以及shareUserId详解

    1.通过content Provider/sharedPreferrence 2.通过shareUserId 我们详细介绍一下shareUserId: Android App Sandbox(andr ...

  9. WCF各个Service之间共享数据

    为了实现cache存储验证用户身份信息,减少通过数据库验证的次数,需要在wcf各个服务之间建立共享数据区. namespace WcfService1 {     public static clas ...

随机推荐

  1. centos6.5安装maridb5.5.51

    1.先创建关于mariadb的yum源 vi /etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = http://yum.m ...

  2. @PostContruct注解

    @PostContruct是spring框架的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法.

  3. 二、vue中组件的使用

    1.组件拆分 1.组件实质上也是一个vue实例,因此组件中也可以使用vue的对象属性,反过来每一个vue实例也是一个vue组件(注:1.唯一不同的是el是根实例的特有选项,2.组件中的data必须是一 ...

  4. 小白学习安全测试(四)——扫描工具-Vega

    WEB扫描工具-Vega 纯图形化界面,Java编写的开源web扫描器.两种工作模式:扫描模式和代理模式[主流扫描功能].用于爬站.处理表单,注入测试等.支持SSL:http://vega/ca.cr ...

  5. FormData介绍

    FormData XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以 ...

  6. About Saliency Object Detection

    显著性对象检测综述 详见:http://mmcheng.net/zh/paperreading/ 一.    程明明等人的论文:Salient Object Detection: A Survey(简 ...

  7. java判断部署项目使用的服务器类型

    有两种方式 1.项目引入portal-kernel.jar.项目运行时使用 根据返回boolean值判断类型! 2.自己写java类 package webService.ZFGX.service; ...

  8. iOS仿安卓手势解锁

    界面是一个九宫格的布局.九宫格实现思路. 先确定有多少列 cloum = 3; 计算出每列之间的距离 计算为: CGFloat margin = (当前View的宽度 - 列数 * 按钮的宽度) / ...

  9. Java编程的逻辑 (18) - 为什么说继承是把双刃剑

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  10. 解决导入Android例子时“Unable to resolve target 'android-x' ”的错误

    今天导入一个Android的例子程序,出现了Unable to resolve target 'android-2' 的错误. 最后google之后才发现原来是 ADK版本 :---API Level ...