创建可重用方法的问题

时间:2016-08-15 18:44:57

标签: javascript angularjs

将以下随机代码重构为可重用方法的最佳方法是什么?我想将此部分放入可重复使用的方法==> $scope.randTarotImg = $scope.tarotImg[Math.floor(Math.random() * $scope.tarotImg.length)];

我尝试了以下操作并且无法正常工作:

function randTarotImg(){
          $scope.randTarotImg = $scope.tarotImg[Math.floor(Math.random() * $scope.tarotImg.length)];
}     
$scope.onClick = function() {
     randTarotImg();  
};

这是相关的代码块:

.controller('TarotCtrl', function ($scope) {

    $scope.tarotImg = [];
      for (var i=1;i<=6;i++) {
      $scope.tarotImg.push(i);
    }  

    $scope.randTarotImg = $scope.tarotImg[Math.floor(Math.random() * $scope.tarotImg.length)];

    $scope.onClick = function() {
          $scope.randTarotImg = $scope.tarotImg[Math.floor(Math.random() * $scope.tarotImg.length)];  
    };

})

1 个答案:

答案 0 :(得分:1)

var arr = [1,2,3,4,5,6,7,8];

function getRandomElement(arr) {
  return arr[Math.floor(Math.random()*arr.length)];
}

console.log(getRandomElement(arr));

在你的情况下:

.controller('TarotCtrl', function($scope) {

  $scope.tarotImg = [];
  for (var i = 1; i <= 6; i++) {
    $scope.tarotImg.push(i);
  }

  function getRandomElement(arr) {
    return arr[Math.floor(Math.random()*arr.length)];
  }

  $scope.randTarotImg = getRandomElement($scope.tarotImg);

  $scope.onClick = function() {
    $scope.randTarotImg = getRandomElement($scope.tarotImg);
  };

});