<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>
<div ng-app="myApp">
<div ng-controller="firstController">
<!--ng-model="data.name"表示此表单的输入值与data.name双向绑定-->
<input type="text" ng-model="data.name">
<p>
first:{{data.name}}
</p>
</div>
<div ng-controller="secondController">
<p>
second:{{thisData.name}}
</p>
</div>
<hr/>
<div ng-controller="onecontroller">
<input type="text" ng-model="data.name">
<p>one:{{data.name}}</p>
</div>
<div ng-controller="twocontroller">
<p>two:{{data.name}}</data></p>
</div>
</div>
<script>
/*
*解决方法1
*/
var app=angular.module("myApp",[]);
app.controller("firstController",function($scope){
console.log($scope);
//创建data对象
$scope.data={
name:"张三"
};
});
app.controller("secondController",function($scope){
console.log($scope);
//此命名空间的data等于上一个兄弟的data对象,即指针指向了firstcontroller控制器的data,
//所以当firstcontroller的data对象的属性发生变化时,因为angular是双向绑定的,所以此控制器的data对象也会发生改变
//如果是基本变量,
//虽然firstController的data赋值给了此控制器data,但当data值改变时,不会触发此控制器脏指令
$scope.thisData=$scope.$$prevSibling.data;
});
/*
*解决方法2
*/
app.factory("Data",function(){
return{
name:"李四"
};
});
app.controller('onecontroller',function($scope,Data){
$scope.data=Data;
});
app.controller('twocontroller',function($scope,Data){
$scope.data=Data;
});
</script>
</body>
</html>
多个控制器的数据共享的两种方法
猜你喜欢
转载自blog.csdn.net/qq_44858021/article/details/91905762
今日推荐
周排行