我正在以角度创建测验,我使用此代码:
<ul>
<li ng-repeat="choice in choices" class="choices" ng-click="setSelection(choice)">{{choice}}</li>
</ul>
var choiceSelection = {
isSelected: false,
userAnswers: [],
setSelection: function(choice) {
this.userAnswers.push(choice);
console.log(this.userAnswers);
}
};
$scope.setSelection = choiceSelection.setSelection;
我想将用户选择存储在userAnswers数组中,但是setSelection中的this是未定义的,因此this.userAnswers和this.isSelected都有效。这段代码适用于普通的JS,我刚测试过它。 这是怎么回事?
答案 0 :(得分:1)
您可以bind this
到您的setSelection函数的正确值:
var choiceSelection = new function ( ) {
this.isSelected = false;
this.userAnswers = [];
this.setSelection = function(choice) {
this.userAnswers.push(choice);
console.log(this.userAnswers);
}.bind( this );
} ;
$scope.setSelection = choiceSelection.setSelection;