2017-07-15 159 views
0

我正在使用$ 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) 
    }); 
+0

什么时候你打电话给$ scope.cart1?复制你的整个代码plz! –

+0

在控制器之间传递值的最佳方式是通过服务。 – ihappyk

+0

@ihappyk $ rootScope实际上是一项服务本身 – fg78nc

回答

0

$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

+0

检测价值是否已被分享?为什么不使用类似'$ broadcast?'的事件库方法? –

+0

老兄,如果你已经低估了先学习角度概念 – Sajeetharan

+1

我在问你一些技术问题,你关心你的投票吗? “如果你只是简单地在控制器中定义,”$ rootScope没有获得赋值“??这意味着什么?以及如果某个其他控制器覆盖了你在服务中共享的那个值,以及关于downvote,如何你能否说我已经降低了投票率? –

1

为什么不使用$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,使用它需要的时候(在绑定它的情况会自动反映在用户界面中)

相关问题