-4

私はAngularを学ぼうとしていますが、fizzBu​​zzを作ろうとしています; 「両方」の条件では結果が得られません:

アプリは次のとおりです。

var myApp = angular.module("myApp", []);

myApp.controller("game", ["$scope", function($scope) {

$scope.number = 0;
$scope.result = "";

$scope.fizzBuzz = function(){

  if($scope.number){

      if($scope.number % 3 == 0)
      {
        return $scope.result = "Fizz";
      }
      else if($scope.number % 5 == 0)
      {
        return $scope.result = "Buzz";
      }
      else if(($scope.number % 3 == 0) && ($scope.number % 5 == 0))
      {
        return $scope.result = "FizzBuzz";
        alert($scope.result);
      }
  }else{
      return "Enter a Number";
  }

};

}]); 

およびバインディング:

<div ng-controller="game">

<input type="text" ng-model="number">

<h1>{{fizzBuzz(result)}}</h1>

</div>

「FizzBu​​zz」は取得できませんが、「Fizz」と「Buzz」は取得できません..

それはプレーンなjsでうまく機能します。これが構文エラーかどうかわかりません..?

ライブ: http://jsfiddle.net/huguxvmx/1/

事前にt​​hnx!

4

3 に答える 3

2

そうでなければ、このように動作し、条件の1つが成功した場合、次に実行されないため、elseを削除してifのみで実行するか、最後のチェックを一番上に移動して使用します&&:

  if(($scope.number % 3 == 0) && ($scope.number % 5 == 0))
  {
    return $scope.result = "FizzBuzz";
    alert($scope.result);
  }
  if($scope.number % 3 == 0)
  {
    return $scope.result = "Fizz";
  }
  if($scope.number % 5 == 0)
  {
    return $scope.result = "Buzz";
  }
于 2014-10-13T08:27:30.457 に答える
0

この条件を設定する必要があります

if(($scope.number % 3 == 0) && ($scope.number % 5 == 0))

&最初にonを置き換え&&ます。

これはJSFiddleで動作しています。

于 2014-10-13T08:31:35.750 に答える
0

Angular で FizzBu​​zz を実行する別の方法を次に示します。誰かがこのエクササイズを別の方法でやろうとしている場合に備えて、2セントを追加すると思いました.

HTMLは次のとおりです。

<!DOCTYPE html>
  <html>

  <head>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script data-require="angular.js@1.3.10" data-semver="1.3.10" src="https://code.angularjs.org/1.3.10/angular.js"></script>
    <script type="text/javascript" src="script.js"></script>
  </head>

  <body ng-app="myApp">
    <h1>FizzBuzz</h1>
    <div ng-controller="myCtrl">
      <div ng-repeat="number in numbers">
        {{ number }} 
        <span ng-if="number%3==0 && number%5!==0" >Fizz</span>
        <span ng-if="number%5==0 && number%3!==0">Buzz</span>
        <span ng-if="number%3==0 && number%5==0">FizzBuzz</span>
      </div>
    </div>
  </body>

</html>

そして、ここにスクリプトがあります:

angular.module('myApp', [])
.controller('myCtrl', ['$scope', function($scope) {
    function range(start, stop, step){
      var a=[start], b=start;
      while(b<stop){b+=step;a.push(b)}
      return a;
    }
    $scope.numbers = range(1, 100, 1);
}]);
于 2015-09-03T20:16:50.037 に答える