我是AngularJS的新手,所以这个问题的答案可能很明显,但我坚持下去。
在我的组件中,我有以下代码(我已将其简化为问题):
class $controller {
constructor($scope, Vote) {
$scope.isRunning = false;
this.Vote = Vote;
}
switchVote(user){
$scope.isRunning = true;
if (appUser.vote) {
var vote = new this.Vote({userId: user.id});
vote.delete().then(function() {
user.vote = null;
$scope.isRunning = false;
})
}
else {
this.componentThing.createVote(user).then(function(vote) {
user.vote = vote.id;
$scope.isRunning = false;
})
}
}
}
在HTML中,我在按钮上有ng-disabled="isRunning"
,允许投票创建和销毁。我们的想法是,如果用户在完成ajax请求之前单击两次,则可以防止多个请求堆积起来。
我的问题是我的switchVote()方法中未定义$ scope。为什么它是未定义的,即使我在构造函数中初始化它?
答案 0 :(得分:0)
$scope
仅在构造函数中可见。您需要将其分配给this
上的访问者,以便您可以在其他功能中访问它。
constructor($scope, Vote) {
this.$scope = $scope;
this.$scope.isRunning = true;
...
}
switchVote(user){
this.$scope.isRunning = true;
...
}