从一个控制器传递值到另一个角度js1
我正在使用$ rootScope将值从一个控制器传递给另一个控制器,但是我没有获得第二个控制器(购物车)中的值。从一个控制器传递值到另一个角度js1
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)
});
$rootScope
没有得到的价值分配,如果你只是在控制器定义,您需要将数据从控制器1传输到控制器2基于某些事件
DEMO
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)
};
});
<!DOCTYPE html>
<html ng-app="app">
<head>
<script data-require="[email protected]" 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>
备注 使用$ rootScope不是在控制器之间传输变量的推荐方式,而是尝试使用services
。
检测价值是否已被分享?为什么不使用类似'$ broadcast?'的事件库方法? –
老兄,如果你已经低估了先学习角度概念 – Sajeetharan
我在问你一些技术问题,你关心你的投票吗? “如果你只是简单地在控制器中定义,”$ rootScope没有获得赋值“??这意味着什么?以及如果某个其他控制器覆盖了你在服务中共享的那个值,以及关于downvote,如何你能否说我已经降低了投票率? –
为什么不使用$broadcast
,考虑到你的控制器结构$scope.$parent
是不够的,在oter情况下,从那里你在放$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;
});
});
现在您的值范围设定注入$rootScope
,使用它需要的时候(在绑定它的情况会自动反映在用户界面中)
什么时候你打电话给$ scope.cart1?复制你的整个代码plz! –
在控制器之间传递值的最佳方式是通过服务。 – ihappyk
@ihappyk $ rootScope实际上是一项服务本身 – fg78nc