好吧,我是棱角分明的新手,之前的搜索显示,在控制器内使用'this'与'$ scope'不同。考虑到这一点,我决定只在我的应用程序中使用范围,这让我想到了我想要理解的这种奇怪的行为。
这是我的控制器和模块:
angular.module('dnd-dices',[]).controller('SingleDicerollCtrl',['$scope','DiceSet',SingleDicerollCtrl]);
function SingleDicerollCtrl($scope, DiceSet){
$scope.dices = DiceSet;
$scope.selectedDie = $scope.dices[0];
$scope.roll = function(){
$scope.result = Math.floor(Math.random() * $scope.selectedDie.max) + 1 ;
};
}
这是我的HTML:
<select ng-options="die.label for die in dices track by die.label" ng-model="selectedDie">
</select>
<h>Result({{selectedDie.label}}):{{result}}</h>
<input type="button" ng-click="roll()" value="Roll!"/>
提问点:
当我调用 roll方法时,$scope.selectedDice
变量位于其原始值($scope.selectedDie = $scope.dices[0];
)中,而this.selectedDie
正在根据我的ng模型进行更改(显示)在HTML中)。为什么会发生这种情况?何时应该在方法中使用此方法或$scope
?
提前谢谢大家