角度流星控制器作为getReactively

时间:2015-07-03 03:09:53

标签: angularjs meteor angular-meteor

配置函数,其中定义了控制器:

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)。然后...'

我做错了什么? 提前谢谢!

1 个答案:

答案 0 :(得分: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 || '')
});

另请注意,整个事情必须包含在自动运行中。