javascript - 使用 ng-repeat 提供多个按钮

标签 javascript angularjs

我正在尝试使用 ng-repeat 创建一个按钮列表,单击每个按钮都可以执行相同的功能,在本例中为掷骰子。我如何获得它,以便每个按钮都有自己对结果的唯一引用?目前,当单击一个按钮时,就会完成正确的计算,但结果会显示在每个按钮旁边,而不仅仅是被单击的按钮。

这是我到目前为止所拥有的(fiddle) :

在 html 中

...
<div ng-repeat="die in dice">
    <button type="button" class="btn btn-default" ng-click="rollDice(1, die, 0, scope)">{{"d" + die}}</button>
    <span>{{result}}</span>
</div>
...

在controller.js

angular.module('diceAngularApp')
.controller('DiceController', function ($scope) {

$scope.dice = [2,3,4,6,8,10,12,20,100];
$scope.result = 0;

$scope.rollDice = function(numRolls, numSides, bonus) {
  var total = "";
  var rolls = new Array( numRolls );

  for (var i = 0; i < numRolls; i++ ) {
    var roll = randomInt( 1, numSides );
    rolls[i] = roll;
    total += roll;      
  }

  $scope.result = total;
}

    function randomInt( intMin, intMax ) {
        intMax = Math.round( intMax );
        intMin = Math.round( intMin );
        return intMin + Math.floor( intMax * (Math.random() % 1));
    }

});

最佳答案

您可以为按钮周围的每个div添加一个 Controller ,然后它们获得自己的范围.

page.html

...
<div ng-repeat="die in dices" ng-controller="DieCtrl">
    <button type="button" class="btn btn-default" ng-click="rollDice(1, die, 0, scope)">{{"d" + die}}</button>
    <span>{{result}}</span>
</div>
...

controller.js

app.controller('DieCtrl', function ($scope) {
    ...
});

关于javascript - 使用 ng-repeat 提供多个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23816535/

相关文章:

javascript - 您可以查看触发该指令的属性吗?

javascript - 如何将选定的对象属性名称输出到angularJs中的段落

javascript - 单击另一个页面时显示和隐藏 div

javascript - AngularJS 指令是否使用输出参数?

javascript - ui-router onEnter 钩子(Hook)多次触发

angularjs - 如何访问 angularjs 中的 $rootscope 变量?

javascript - 根据 W3C,我应该如何将 Canvas 放入剪贴板?

javascript - 如何通过单击按钮来增大或减小页面的字体大小

javascript - 使用新数据重新填充选项卡

javascript - Jquery Nav 检测屏幕尺寸