2013-07-30 4 views
11

Я видел, что на AngularJS учебники, что некоторые люди заявляют о своих функций контроллера так:Декларирование контроллеры AngularJS

function FirstController($scrope) { 
    // do something with $scope 
} 

и другие сделали это так:

var FirstController = function ($scope) { 
    // do something with scope 
} 

Какой путь это лучший способ объявить контроллер в вашем JS-файле, который будет работать лучше всего с последней версией AngularJS (прямо сейчас 1.0.7), как и в каких лучших практиках? Или это не имеет большого значения?

+0

либо способ отлично работает лучшая практика, посмотрите ниже для ответа @ssorallen –

+0

Тот же ответ (с небольшим объяснением переднего плана) по адресу http://stackoverflow.com/questions/17035890/angular-convention-for-declaring-controllers – Mawg

+0

Ответ Я задал аналогичный вопрос: http://stackoverflow.com/ a/27383257/1254597 –

ответ

21

Вы должны следовать второму примеру, который они предлагают, который использует строку для идентификации вашего контроллера, а не потенциально глобальной функции. Используйте синтаксис Array, чтобы вы могли минимизировать код, не беспокоясь о параметрах функции переименования minifier.

var myApp = angular.module('myApp'); 

myApp.controller('GreetingCtrl', ['$scope', function($scope) { 
    $scope.greeting = 'Hola!'; 
}]); 

Источник: http://docs.angularjs.org/guide/controller

+0

, это ясно объясняется в официальных документах angularjs. – Cooshal

+8

Чтобы быть справедливым, первый пример в документах Angular показывает то, что напечатал оригинальный плакат. Угловая команда должна удалить этот пример, поскольку это плохая практика. –

+1

Честно говоря, это действительно выглядит запутанным, если вы не читаете документы angularJS и не понимаете, что происходит. –

0
myApp.controller('myControl',['$scope',function($scope){ 
    $scope.controlname = "Something"; 
}]); 
0

Рекомендуемый способ объявления контроллеров используется обозначение массива:

someModule.controller('MyController', ['$scope', 'dep1', 'dep2', function($scope, dep1, dep2) { 
    ... 
    $scope.aMethod = function() { 
    ... 
    } 
    ... 
}]); 

согласно angularJS сайте: https://docs.angularjs.org/guide/di

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