2014-12-02 3 views
0

Должно быть указано: Панель приборов и панель инструментов. Каждый имеет свой собственный контроллер, а DashboardCtrl - это родительский контроллер для AccountsCtrl. Вопрос в том, как получить доступ к дочернему контроллеру области var в родительском контроллере? я судимый писать в AccountCtrlУгловое значение области родительского контроля в контроллере ребенка

console.log($scope.var); 

Но он говорит мне неопределенные.

Родитель контроллер:

.controller("DashboardCtrl", ["$scope", "$location", "userSvc",function ($scope, $location, authenticationSvc, userSvc) { 
    $scope.getAccounts = function() { 
     userSvc.getAccounts($scope.userInfo.accessToken, $scope.userInfo.companyId). 
      then(function (result) { 
       $scope.accounts = result; 
      }, function (error) { 
       console.log(error); 
      }); 
    }; 
    $scope.getAccounts(); 
}]) 

функция getAccounts в userSvc:

function getAccounts(accessToken, companyId) { 
     var deferred = $q.defer(); 
     $http({ 
      url: "/api/accounts" 
      method: "GET", 
      headers: {'Content-Type': 'application/json'} 
      }). 
      then(function (result) { 
       if(result.data.error === 0) { 
        accounts = result.data.data; 
        deferred.resolve(result.data.data); 
       } 
       else { 
        deferred.reject(error); 
       } 
      }, function (error) { 
       deferred.reject(error); 
      }); 
     return deferred.promise; 
    }; 

И наконец AccountCtrl:

.controller("AccountCtrl", ["$scope", "$location", "$window", "$state", "$stateParams", "userSvc", function($scope, $location, $window, $state, $stateParams, userSvc) { 
    console.log($scope.accounts); 
}; 
+0

показать остальную часть кода. –

+0

$ scope. $ Parent - ссылка на родительскую область. – Rasalom

+0

Я пробовал даже этот путь $ scope. $ Parent.accounts, no way = ( – Yelnar

ответ

1

Это не будет работать, потому что в то время, когда AccountCtrl функция работает, $scope.accounts по-прежнему не определено - он будет определен как только ваше обещание будет решено асинхронно.

Если вы хотите, чтобы реагировать на это событие в $scope.accounts, то вы должны использовать $watch:

$scope.$watch("accounts", function(){ 
    console.log($scope.accounts); 
}); 
+0

Спасибо! И небольшое добавление, похоже, если я использую $ scope.accounts в шаблоне как {{accounts}} в то же время - т работы. – Yelnar

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