2017-01-16 63 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

相关问题