Angularjs“this”在普通对象中未定义

时间:2015-02-27 22:38:43

标签: angularjs

我正在以角度创建测验,我使用此代码:

<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,我刚测试过它。 这是怎么回事?

1 个答案:

答案 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;