2015-05-19 7 views
0

У меня есть два контроллера:Как передать данные в контроллере Угловой JS?

<div ng-controller="Main"> 
    <div ng-controller="Map"></div> 
</div> 

В контроллере Main У меня есть переменная $scope.mapCoord; Как я могу передать эту переменную в контроллере Map?

+0

Возможный дубликат [Работа с $ scope. $ Emit и. $ On] (http://stackoverflow.com/questions/14502006/working-with-scope-emit-and-on) – paul

ответ

2

Используйте сервис. Например:

var app = angular.module('myApp', []) 
app.service('sharedProperties', function() { 
    var mapCoord= 'Test'; 

    return { 
     getProperty: function() { 
      return mapCoord; 
     }, 
     setProperty: function(value) { 
      mapCoord= value; 
     } 
    }; 
}); 

Внутри вашего главного контроллера

app.controller('Main', function($scope, sharedProperties) { 
    $scope.mapCoord= sharedProperties.setProperty("Main"); 
}); 

Внутри контроллера Карта

app.controller('Map', function($scope, sharedProperties) { 
    $scope.mapCoord= sharedProperties.getProperty(); 
}); 

Вот скрипку для вас. JSFiddle

+0

Возможно, это была другая ошибка на твоей стороне. Посмотри на мою скрипку. Он работает отлично. Отправьте свой угловой код. –

+0

В вашем exmaple есть два контроллера, но они разделены, у меня есть контроллер внутри контроллера – vaved

+0

Сначала я получаю значение от AJAX и после этого: 'setProperty (objFromAjax);'. Но контроллер «Карта» работает быстрее, чем AJAX возвращает данные – vaved

0

В контроллере «Карта», установите «Main» возможности для текущей области, например, как показано ниже:

app.controller('Map', ['$scope','$controller',function($scope, $controller) { 

    $controller('Main', { 
     $scope : $scope 
    }); 
}]); 

После этого вы можете получить доступ ко всему объему главного контроллера от своего контроллера сына:

app.controller('Map', ['$scope','$controller',function($scope, $controller) { 

    $controller('Main', { 
     $scope : $scope 
    }); 

    var coord = $scope.mapCoord; 
}]); 
+0

Посмотрите, пожалуйста, комментарий к предыдущему вопросу, я использую AJAX, и он помещает $ scope, но контроллер 'Map' работает быстрее – vaved

+0

OK, не забудьте заполнить свой начальный вопрос, чтобы помочь следующему человеку понять проблему. –

+0

Хорошо, надеюсь, вы мне поможете – vaved

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