2017-01-16 81 views
0

如何將數據從一個控制器傳遞到另一個控制器?將數據從一個控制器傳遞到AngularJS中的另一個控制器

我看了很多東西,比如使用root Scope,使用服務,使用廣播事件等,但似乎沒有任何工作。有人可以指導我嗎?

+1

參見一個代碼示例這樣一個問題:http://stackoverflow.com/questions/21919962/share-data -between-angularjs-controllers – DevDig

+0

這裏是plunker:https://plnkr.co/edit/T2QZMamO 8tg5wPnm2V40?p =預覽 – ritesh

回答

1

您可以使用Servicefactory在控制器之間共享數據。

DEMO

var app = angular.module("clientApp", []) 
 
app.controller("TestCtrl", 
 
    function($scope,names) { 
 
    $scope.names =[]; 
 
    $scope.save= function(){ 
 
     names.add($scope.name); 
 
    } 
 
    
 
    
 
    } 
 
); 
 
    
 
app.controller("TestCtrl2", 
 
    function($scope,names) { 
 
    
 
    $scope.getnames = function(){ 
 
    $scope.names = names.get(); 
 
    } 
 
    } 
 
); 
 
app.factory('names', function(){ 
 
    var names = {}; 
 

 
    names.list = []; 
 

 
    names.add = function(message){ 
 
    names.list.push({message}); 
 
    }; 
 
    
 
    names.get = function(){ 
 
    return names.list; 
 
    }; 
 

 
    return names; 
 
});
<!doctype html> 
 
<html > 
 

 
<head> 
 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> 
 
    <script src="script.js"></script> 
 
</head> 
 

 
<body ng-app="clientApp"> 
 
    <div ng-controller="TestCtrl"> 
 
    <input type="text" ng-model="name"> 
 
    <button ng-click="save()" > save</button> 
 
    
 
    </div> 
 
    
 
    <div ng-init="getnames()" ng-controller="TestCtrl2"> 
 
    <div ng-repeat="name in names"> 
 
     {{name}} 
 
     </div> 
 
     
 
    </div> 
 
</body> 
 

 
</html>

DEMO WITH ROUTE

+0

這似乎沒有工作。 – ritesh

+0

你用這個 – Sajeetharan

+0

試了一下,我試過plunkr,但它不起作用。 – ritesh

0
I think you are switching controller due to state change. Then an easy way to pass data from parent controller to any child controller apart from using factory or services is using state params 

// In parent controller 
$state.go('child.state', { 
     'key' : $scope.value 
    }); 
//In child controller 
$scope.sentObject = angular.copy($stateParams.key); 
+0

這不是父子控制器關係。 – ritesh

+0

它不一定是,它只是發送一些價值角度與你正在改變的狀態。你可以在這個新狀態的控制器中訪問它。 – Yauza

相關問題