2017-11-08 22 views
0

以下は私の角度JS WebアプリケーションのJSで機能していない:

$scope.total = 50000000; 

var ref = databaseService.players; 


$scope.players = $firebaseArray(ref); 


$scope.picked = []; 
$scope.history = []; 

$scope.buy = function(player) { 
     //remove if already added locally 
     var index = $scope.history.indexOf(player); 
     var index2 = $scope.picked.indexOf(player.id); 
     if(index>=0 || index2>=0){ 
      $scope.history.splice(index,1); 
      $scope.picked.splice(index2,1); 
      PlayerService.removePlayerFromSelection(player); 
      return; 
     } 

     //max 6 allowed 
     if($scope.history.length>=6 || $scope.picked.length>=6){ 
      alert('max 6 allowed'); 
      return; 
     } 
     //to make sure moeny doesn't go below $50,000,000 
     if($scope.total<0){ 
      alert('Oops! You have run out of cash'); 
      return; 
     } 

     var selected = $scope.history.reduce(function(a,b){ 
      a[b.position] = (a[b.position] || 0) + 1; 
      return a; 
     }, {}) || {}; 

     if(!selected[player.position] || selected[player.position]<2 && $scope.total>0){ 
      $scope.history.push(player); 
      $scope.picked.push(player.id); 
      PlayerService.addPlayerToSelection(player);  
     }else{ 
      alert('You can add only two players per position'); 

     } 
     }; 

     $scope.getTotal = function(){ 
     return $scope.history.reduce(function(tot, p){ 
      tot = tot - p.price; 
      return tot; 
      if (tot <0){ 
       alert('Oops! You have run out of money') 
      } 
     }, $scope.total); 
     }; 
    $scope.saveTeam = function(){ 
    userRef.set($scope.picked);  
    $location.path('/mySquad'); 
    }; 

MY問題

合計がより低くなったときにユーザーに警告する方法はあります0?私はbuy()関数にif文を追加しようとしましたが、動作しませんでした。関数の結果より少ない値でgetTotal結果かどうかは、総予算は0

代替

を下回ると、ユーザーが警告、私は疲れた「チームを保存」ボタンは無効持つことです別のオプションを持っていることを目指し以下はHTMLコードですが、試してみましたが失敗しました。

<button type="submit" class="btn btn-lg btn-primary btn-md " ng-disabled="history.length<6" ng-disabled="getTotal<0" ng-click="saveTeam()" > Save Team </button> 

答えて

0

以下のように関数を書き直すことはできますか?あなたは、return文

$scope.getTotal = function(){ 
     return $scope.history.reduce(function(tot, p){ 
      tot = tot - p.price; 

      if (tot <0){ 
       alert('Oops! You have run out of money') 
      } 
      return tot; //changed location of this line 
     }, $scope.total); 
     }; 
+0

ありがとうございます。今問題は、ユーザーが一度0になると、ページは継続的にユーザーにメッセージ「おっと!選択したプレーヤーの選択を解除する機会をユーザーに与えずに、お金が足りなくなりました。それはリターンの位置と関係があるものかもしれませんか? –

0

ここで、return文の後のコードは実行されません。 return totを削除するか、条件に該当する場合は下に移動してください。

$scope.getTotal = function(){ 
    return $scope.history.reduce(function(tot, p){ 
     tot = tot - p.price; 
     return tot; // wrong place of return statement 
     if (tot <0){ // it won't execute, coz, it was returned before line itself 
      alert('Oops! You have run out of money') 
     } 
    }, 
+0

感謝のための場所を変更する必要があります。今問題は、ユーザーが一度0になると、ページは継続的にユーザーにメッセージ「おっと!選択したプレーヤーの選択を解除する機会をユーザーに与えずに、お金が足りなくなりました。それはリターンの位置と関係があるものかもしれませんか? –

0
$scope.getTotal = function(){ 
return $scope.history.reduce(function(tot, p){ 
    tot = tot - p.price; 

    if (tot <0){ 
     alert('Oops! You have run out of money') 
     return tot; // If you place here once you come here it will return 
    } 
}, 
+0

ありがとうございます。問題は、選手が選択されると、予算値(50000000 - プレーヤー価格)が消えることです –