2014-10-13 2 views
-4

Я пытаюсь изучить Угловое, и я пытаюсь сделать fizzBuzz; Я не получить результат с 'как' условия:FizzBuzz в угловом?

Вот приложение:

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> 

Он не может получить «FizzBuzz'but 'Fizz' и «Buzz».

Это работает с простым js хорошим. Я просто не вижу, является ли это ошибкой sytax.?

Live: http://jsfiddle.net/huguxvmx/1/

Thnx заранее!

+3

предполагает название, вы уже знаете ошибку в коде ... – Novocaine

+0

Его состояние проблема. Добавьте свое условие в обратном порядке. Это решит вашу проблему. Проверка jsfiddle http://jsfiddle.net/huguxvmx/5/ –

ответ

0

Вы должны установить это условие

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

на первом месте и заменить & на &&.

Работает JSFiddle.

+0

То есть это лучше! Я приму это через 5 мин :) – Mar

2

, потому что иначе, если работа в этом случае, если один из вас условие получить удалось, то следующий не получить казнены удалить еще и сделать это с только если или переместить последний чек вверх и использовать &&:

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"; 
    } 
+0

Вы не проверяете, введен ли $ scope.number. Первый оператор if: если введено число, проверьте, можно ли его разделить 3 ... и т. Д. – Mar

+0

@Mar thats upper check Я только что написал внутренний код этого условия. –

0

Это альтернативный способ сделать FizzBuzz в Angular. Просто подумал, что я добавляю свои 2 цента на тот случай, если кто-то хочет сделать это упражнение другим способом.

Вот HTML:

<!DOCTYPE html> 
    <html> 

    <head> 
    <link rel="stylesheet" type="text/css" href="style.css"> 
    <script data-require="[email protected]" 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); 
}]);