配置函数,其中定义了控制器:
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)。然后...'
我做错了什么? 提前谢谢!
答案 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 || '')
});
另请注意,整个事情必须包含在自动运行中。