2017-07-15 158 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,使用它需要的時候(在綁定它的情況會自動反映在用戶界面中)

相關問題