我使用$ rootScope将值从一个控制器传递到另一个控制器,但我没有在第二个控制器(购物车)中获取值。
x.controller("first",function($scope,$http,$rootScope){
$scope.cart1=function(x,y){
$rootScope.img=x;
$rootScope.login=y;
}
});
x.controller("cart",function($scope,$rootScope){
$scope.cart2=$rootScope.img;
console.log($scope.cart2)
});
答案 0 :(得分:1)
$rootScope
如果您只是在控制器中定义,则无法获取分配的值,您需要根据某个事件将数据从controller1传输到controller2
<强>样本强>
var x =angular.module('app', [])
x.controller("first",function($scope,$rootScope){
$scope.cart1=function(x,y){
console.log(x);
$rootScope.img=x;
$rootScope.login=y;
}
});
x.controller("cart",function($scope,$rootScope){
$scope.getData=function(){
$scope.cart2=$rootScope.img;
console.log($scope.cart2)
};
});
&#13;
<!DOCTYPE html>
<html ng-app="app">
<head>
<script data-require="angular.js@1.4.3" data-semver="1.4.3" src="https://code.angularjs.org/1.4.3/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body >
<div ng-controller="first">
<button ng-click="cart1('test','test2')">transfer</button>
</div>
<div ng-controller="cart">
<button ng-click="getData()">getStoredValue</button>
{{cart2}}
</div>
</body>
</html>
&#13;
注意强>
不建议使用$ rootScope在控制器之间传输变量,而是尝试使用 services
。
答案 1 :(得分:1)
为什么不使用$broadcast
,考虑到你的控制器结构$scope.$parent
已经足够了,或者从你发射$rootScope
$broadcast
var x =angular.module('app', [])
x.controller("first",function($scope){
$scope.cart1=function(x,y){
$scope.$parent.$broadcast('value changed', {x: X, y: y});
}
});
x.controller("cart",function($scope){
$scope.$on('value changed', function(data){
$scope.login = x;
$scope.cart2 = y;
});
});
现在你的值在范围内设置,在需要时使用它(如果绑定它将自动反映在UI中)
答案 2 :(得分:0)
(function() {
"use strict";
angular
.module('app')
.factory("cartFactory", cartFactory);
function cartFactory($http) {
return {
login: '',
cart2:''
};
}})();
这是你的工厂 你可以像这样使用多个控制器......
var x =angular.module('app', [])
x.controller("first",function($scope,cartFactory){
cartFactory.login=x;
cartFactory.cartFactory=y;
}
});
x.controller("cart",function($scope,cartFactory){
$scope.login = cartFactory.login;
$scope.cart2 = cartFactory.cart2;
});
将一个控制器的数据传递给另一个多控制器非常简单。