2016-05-16 46 views
0

我想從一個控制器到另一個控制器的數據,任何人都可以幫助我。例如:訪問另一個控制器的數據

.controller('firstCtrl',function($scope){ 
    $scope.item = [{id:1, name:'John'},{id:2, name:'carter'},{id:3, name:'barsoom'},..] 
    }) 
    .controller('secondCtrl',function($scope){ 
    $scope.jsondata = item; 
    console.log(JSON.stringify($scope.jsondata)); 
    }) 

是否有可能。誰能幫幫我嗎。謝謝。

+0

的[如何共享在角應用控制器之間的數據以正確的方式](可能的複製http://stackoverflow.com/問題/ 34442752/how-to-share-data-between-controller-in-angular-app-in-the-the-way) – Andrew

+0

嗨..感謝您的回覆。我已經發布了另一個[問題](http://stackoverflow.com/questions/37257798/accessing-data-from-one-controller-to-another),詳細地解釋 – naik3

+0

請幫我解決這個問題。 – naik3

回答

1

試試這個

<body ng-app="myApp"> 

    <div ng-controller="ctrl"> 
     {{name}} 

    </div> 

    <div ng-controller="c"> 
     {{name}} 

    </div> 


</body> 

變種應用= angular.module( '對myApp',[])。控制器( 'CTRL',[ '$範圍', '$ rootScope',函數($範圍,$ rootScope){

$rootScope.name = "vipin"; 


}]).controller('c', ['$scope', '$rootScope', function ($scope) { 


}]) 

運行這段代碼,你可以在兩個控制器

+0

嗨..謝謝你的回覆。我試過了,它不起作用。 – naik3

+0

嗨..感謝您的回覆。我已經發布了另一個[問題](http://stackoverflow.com/questions/37257798/accessing-data-from-one-controller-to-another),位詳細解釋 – naik3

+0

我編輯我的代碼現在使用這個 –

1

如果你想在控制器之間共享數據,你應該使用Angular Services。他們是單身人士,旨在用於在您的應用程序中共享通用代碼。因此,例如,放置您的$ http請求或一些在許多地方使用的數據是一種很好的做法。

一些例子是:

https://jsfiddle.net/relferreira/2b5amcya/

JS:

angular.module('app', []); 

angular.module('app') 
    .controller('MainController', mainController); 

mainController.$inject = ['UserService']; 

function mainController(UserService){ 

    var vm = this; 
    vm.name = UserService.getName(); 

} 

angular.module('app') 
    .controller('DetailController', detailController); 

detailController.$inject = ['UserService']; 

function detailController(UserService){ 

    var vm = this; 
    vm.name = UserService.getName(); 
    vm.other = 'test'; 

} 

angular.module('app') 
    .factory('UserService', userService); 

function userService(){ 
    var name = 'Renan'; 
    return{ 
    getName: getName 
    } 

    function getName(){ 
    return name; 
    } 
} 

HTML:

<div data-ng-app="app"> 

    <div data-ng-controller="MainController as mainVm"> 
    {{mainVm.name}} 
    </div> 

    <div data-ng-controller="DetailController as detailVm"> 
    {{detailVm.name}} 
    {{detailVm.other}} 
    </div> 

</div> 
+0

嗨..感謝您的回覆。我已經發布了另一個[問題](http://stackoverflow.com/questions/37257798/accessing-data-from-one-controller-to-another),位詳細解釋 – naik3

0

得到$ rootScope.name值可以使用事件廣播服務在控制器注入。

方法1:

myApp.controller('FirstCtrl', function ($scope) { 
    $scope.$broadcast('Test_Data',{ data: {} }); 
    }) 
myApp.controller('SecondCtrl', function ($scope) { 
    $scope.$on('Test_Data', function(event, args) { 
     var data= args.data 
     // do something useful here; 
    }); 
    }); 

方法2:

 myApp.factory('TestData', function() { 
     var data = {}; 
      var setData=function(){...} 
     return data; 
     }); 
    myApp.controller('FirstCtrl', function ($scope, TestData) { 
     $scope.data = TestData; 
     }) 
+0

嗨..謝謝你的回覆。我正在嘗試第一種方法** $ scope。$ broadcast('Test_Data',{data:{}}); **在這一行中,您可以解釋「{data; {}}」。我如何在我的代碼中使用。 – naik3

+0

我試過了:** $ scope。$ broadcast('Test_Data',$ scope.item); **是否正確..? – naik3

+0

嗨..感謝您的回覆。我已經發布了另一個[問題](http://stackoverflow.com/questions/37257798/accessing-data-from-one-controller-to-other),位詳細解釋 – naik3

相關問題