2015-06-24 5 views
4

У меня есть этот контроллерЭта функция имеет слишком много утверждений. (41)

.controller('ctrl', function($scope, $rootScope, $timeout, $alert, 
           $location, $tooltip, $popover, BetSlipFactory, 
           AccordionsFactory, AuthFactory, 
           RiskWinCalculations) {...}); 

и я получаю эту ошибку из-за jshint:

линия 10 цв 44 Эта функция имеет слишком много заявлений. (41)

поэтому, что делать, чтобы избежать этого?

+3

, что означает, что ваш код код плохо управляемый. Вы должны сделать его модульным. Затем ваш код будет также иметь более 1000 строк. Правильно? –

+1

Разделить его на значимые части с меньшими заявлениями? Или, если код повторяется, сделайте его менее повторяющимся. – user2357112

+0

@NietzscheProgrammer о, это действительно здорово. Не могу поверить в такой случай. Вы могли бы удалить неиспользуемые сначала, а затем проверить, что такое номер ... –

ответ

12

Это не означает, что плохо управляемый код, как @pankajparkar говорит прежде, это может быть потому, что у вас есть что-то вроде этого, позволяет сказать, что это один из моих проектов:

$scope.betLoader = false; 
    $scope.showIfbetAlerts = true; 
    $scope.displayStraight = true; 
    $scope.displayParlay = true; 
    $scope.displayIfBet = true; 
    $scope.displayTeaser = true; 
    $scope.displayPleaser = true; 
    $scope.displayReverse = true; 
    $scope.unavailableBet = false; 
    $scope.subAccordion = false; 
    $scope.betTypeShow = false; 
    $scope.showStraight = true; 

вы можете сделать это:

$scope.setInitialState = function() { 
    $scope.betLoader = false; 
    $scope.showIfbetAlerts = true; 
    $scope.displayStraight = true; 
    $scope.displayParlay = true; 
    $scope.displayIfBet = true; 
    $scope.displayTeaser = true; 
    $scope.displayPleaser = true; 
    $scope.displayReverse = true; 
    $scope.unavailableBet = false; 
    $scope.subAccordion = false; 
    $scope.betTypeShow = false; 
}; 
$scope.setInitialState(); 

, который исправит это.

UPDATE

Поясню:

это связано не только с зависимостями, JSLint выдает эту ошибку, когда есть слишком много заявлений, он говорит, что прежде, чем на линии десять которая когда контроллер начинается, так что расставаясь с ним, у него должно быть слишком много утверждений, если вы поместите все эти утверждения в 1 функцию, эти утверждения будут уменьшены до 1 :)

+1

это не только с зависимостями, jslint выдает эту ошибку, когда слишком много утверждений, он говорит, что в строке 10, где контроллер начинает, так что оттуда, у него должно быть слишком много утверждений, если вы поместите все эти утверждения в 1 функцию, эти утверждения будут уменьшены до 1 :) – TheUnnamed

+1

Genius, я поставил все эти утверждения вместе и завернул в функцию и boila :) – NietzscheProgrammer

+0

@ TheUnnamed получил вашу точку .. спасибо за очищение моей неверной интерпретации. –

12

Лучший способ избавиться от ошибки - это отредактировать ваши настройки jshint, чтобы не отобразите его.

http://jshint.com/docs/options/#maxstatements

Это очень невыразительный jshint предупреждение, что на самом деле не значит ничего.

Обычно функция, которая требует более 4 или 5 параметров, является плохой идеей по многим причинам, но не является технически неправильной. В этом случае эти параметры являются способом Углового определения зависимостей, поэтому не должно быть проблемой. Если код работает, я бы не стал беспокоиться об этом.

+0

спасибо Николас :) – NietzscheProgrammer

3

Если контроллер хочет больше заявлений и не имеют какой-либо другой способ, чтобы удалить его затем в файл .jshintrc и редактировать его как

"maxstatements": 80, // or whatever number you want' 

благодаря

+0

Я думаю, что это лучшее, что можно сделать, поскольку этот предел контролирует только читаемость. :) – Kandy

Смежные вопросы