2015-07-03 4 views
1

Функция конфигурации, когда контроллер, как определено:Угловая Метеор controllerAs getReactively

function config($stateProvider){ 

    $stateProvider 
    .state('games', { 
     url: '/games', 
     templateUrl: 'client/games/games.ng.html', 
     controller: 'Games', 
     controllerAs: 'vm' 
    }); 
} 

Мой контроллер:

function GamesController($scope, $meteor, Engine) { 
var vm = this; 
vm.selectedMove = { _id: 'dsfsdf'} 
vm.evaluations = $meteor.collection(Evaluations), 
$meteor.subscribe('evaluations', {}, $scope.getReactively('vm.selectedMove')._id).then(function(){ 
    console.log(vm.evaluations); 
}); 
} 

Я получаю сообщение об ошибке: «Не удается прочитать свойство„_id“неопределенных ", и он указывает на эту строку: '$ scope.getReactively (' vm.selectedMove ') ._ id) .then ...'

Что я делаю неправильно? Спасибо заранее!

ответ

1

Ценность, связанная $scope.getReactively, может не всегда присутствовать. В этом случае вы вызываете getReactively при построении своего контроллера. Так что $scope.vm еще не установлен. Следовательно getReactively будет возвращать undefined.

Вы можете попробовать $scope.getReactively('vm.selectedMove._id') и проверить наличие неопределенного. Например:

this.query = {q : '' }; 
this.list = $scope.$meteorCollection(Participants); 
$scope.$meteorAutorun(function() { 
    var q = $scope.getReactively('participants.query.q'); 
    $scope.$meteorSubscribe('participants', q || '') 
}); 

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