2016-05-16 3 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-angle-app-in-right-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) { 


}]) 

Выполнить этот код вы можете получить $ значение rootScope.name как в контроллере

+0

Привет. Спасибо за ответ. Я пробовал, он не работает. – naik3

+0

Привет .. Спасибо за ответ. Я опубликовал еще один вопрос (http://stackoverflow.com/questions/37257798/accessing-data-from-one-controller-to-another), подробно объясненный бит – naik3

+0

. Теперь я редактирую свой код –

1

Если вы хотите обмениваться данными между контроллерами, вы должны использовать Угловые сервисы. Они являются одноточечными, которые предназначены для совместного использования общего кода в вашем приложении. Таким образом, хорошей практикой является, например, запрос на получение $ 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

вы можете использовать событие вещать или службы вводить в контроллер.

Метод 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-another), подробно объясненный бит – naik3

Смежные вопросы