Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重复一个函数调用7次,然后使用angularjs用返回的值填充标签_Javascript_Html_Angularjs_Twitter Bootstrap - Fatal编程技术网

Javascript 重复一个函数调用7次,然后使用angularjs用返回的值填充标签

Javascript 重复一个函数调用7次,然后使用angularjs用返回的值填充标签,javascript,html,angularjs,twitter-bootstrap,Javascript,Html,Angularjs,Twitter Bootstrap,我想运行一个函数7次,然后在单击按钮时将返回的值放入7个标签中。这是我到目前为止的基本情况 <button class="btn btn-danger btn-sm" ng-click="getRandom()">Roll</button> <span class="label label-info">1: </span> <span class="label label-info">2: </span> $scope

我想运行一个函数7次,然后在单击按钮时将返回的值放入7个标签中。这是我到目前为止的基本情况

<button class="btn btn-danger btn-sm" ng-click="getRandom()">Roll</button>
<span class="label label-info">1:  </span>
<span class="label label-info">2:  </span>

$scope.getRandom = function(){  
var roll1 = Math.floor((Math.random()*(6 - 1))+1);
var roll2 = Math.floor((Math.random()*(6 - 1))+1);
var roll3 = Math.floor((Math.random()*(6 - 1))+1);
var roll4 = Math.floor((Math.random()*(6 - 1))+1);

var all = [roll1, roll2, roll3, roll4]
all.sort(function(a, b){return a-b});

var total = all[0] + all [1] + all[2];
return total;
};
滚动
1:  
2:  
$scope.getRandom=function(){
var roll1=Math.floor((Math.random()*(6-1))+1);
var roll2=Math.floor((Math.random()*(6-1))+1);
var roll3=Math.floor((Math.random()*(6-1))+1);
var roll4=Math.floor((Math.random()*(6-1))+1);
var all=[roll1,roll2,roll3,roll4]
sort(函数(a,b){返回a-b});
var总计=全部[0]+全部[1]+全部[2];
返回总数;
};

我曾考虑过使用ngRepeat调用函数7次,或者只是在函数中加入一个循环来返回所有7个值,但我不太确定如何实现这一点,或者我应该做什么。

您的思路是正确的。但是不要反复使用同一个函数,而是尝试将骰子抽象为它自己的函数。这样,您就可以在这里的第二个代码块中重用它,在这里循环,掷骰子7次并将其推入数组

然后,使用.reduce()将所有值一起添加到数组中(请参见)

var all=[];
var=function(){
返回Math.floor((Math.random()*(6-1))+1);
}
对于(i=0;i<7;i++){
var val=diceRoll();
所有。推(val);
}
/*编辑:下面,我想你不想要这个,对不起,已经很晚了*/
all.reduce(函数(上一个、当前、索引、数组){
返回上一个+当前;
});
最终编辑:

好吧,既然你问了,我认为这应该是一个角度特定的方法——但我在这个领域的知识有点贫乏,所以其他人可能会告诉我一个更有效或“角度”的方法

因此,相反,将生成的对象数组定义为附加到$scope,并将掷骰子生成的值定义为附加到JSON对象的键“value”——然后使用此处找到的awesome对生成的数组进行排序,并使用ng repeat渲染数组

var-app=angular.module(“myApp”,[]);
app.controller(“myController”、[“$scope”、函数($scope){
$scope.all=[];
var=function(){
返回Math.floor((Math.random()*(6-1))+1);
}
对于(i=0;i<7;i++){
var val=diceRoll();
$scope.all.push({“value”:val});
}
功能排序结果(道具、asc){
$scope.all=$scope.all.sort(函数(a,b){
如果(asc)返回(a[prop]>b[prop]);
否则返回(b[prop]>a[prop]);
});
}
排序结果(“值”,真);
}]);
标记:

<div ng-app="myApp">
    <table ng-controller="myController">
        <tr ng-repeat="a in all">
            <td>{{a.value}}</td>
        </tr>
    </table>
</div>

{{a.value}}

@beefwipe!你回来了!这个问题很有趣。让我想做更多的角度!
var app = angular.module("myApp", []);

app.controller("myController", ["$scope", function($scope){
    $scope.all = [];
    var diceRoll = function() {
     return Math.floor((Math.random()*(6 - 1))+1);
    }
    for (i = 0; i < 7; i++) {
      var val = diceRoll();
      $scope.all.push({"value":val});
    }
    function sortResults(prop, asc) {
        $scope.all = $scope.all.sort(function(a, b) {
            if (asc) return (a[prop] > b[prop]);
            else return (b[prop] > a[prop]);
        });
    }
   sortResults('value', true);

}]);
<div ng-app="myApp">
    <table ng-controller="myController">
        <tr ng-repeat="a in all">
            <td>{{a.value}}</td>
        </tr>
    </table>
</div>