2013-04-01 2 views
0

Новое в angularJS, я хотел бы знать, какие плюсы и минусы между кодами ниже? Что рекомендуется использовать?AngularJS структура кодов. Это какая-то разница?

$routeProvider.when('foo', { 
    templateUrl: 'foo.html', 
    controller: fooCtrl 

    function fooCtrl() { 
     //something here 
    } 
}); 

или

$routeProvider.when('foo', { 
    templateUrl: 'foo.html' 
}); 

app.controller("fooCtrl", function() { 
    //something here 
}); 

//in html 
<div ng-controller="fooCtrl"></div> 
+1

Первый недействителен JS код, который даст вам синтаксическую ошибку. – Stewie

ответ

0

Я предпочитаю второй подход, и использовать его при разработке нашего приложения. Это элегантный способ кодирования, разделение ваших маршрутов-конфигурации, модуля-проводки и т. Д. От контроллеров. мы можем записать routesconfig в главном файле сказать app.coffee [Я использую CoffeeScript] определение как

routesConfig = ($route) -> 
    $route.when('/employees', 
     {templateUrl: 'employee.employeeView.html'}) 

Определение routesconfig и проводки модулей [например: employee.employeeController] здесь.

modules = ['employee.employeeController', 'user.userController'] 

вы можете создать, запустить приложение угловую здесь,

m = angular.module('app', modules) 
m.config['$route', routesConfig] 

Теперь вы можете указать контроллеры отдельно, например, в employeeController.coffee

name = 'employee.employeeController' 
mod = angular.module(name, []) 
mod.controller(name, [ 
    '$scope' 
    '$log' 
    ($scope, $log) -> 
      $scope.name = 'java' 

В вашем View , скажем employeeView.html

<div ng-controller="employee.employeeController"> 
<div class ="info"> 
    Name is {{name}} 
</div> 

В основном мы разделяем контроллеры, вид, конфигурацию приложения друг от друга.

0

Чтобы добавить что-то конкретное на ваш вопрос,

Если вы используете первый подход, то, возможно, вы используете контроллер в качестве Route Controller, и в второго подхода, это View Controller. В обоих случаях контроллер будет создан для указанного маршрута.

Например, у меня есть главная страница index.html, и я добавляю много видов (ng-view) в основной шаблон html. Если у вас есть два разных раздела просмотра в этом шаблоне, скажите «section1» и «section2», и каждый из них включен с ng-view, тогда вам, вероятно, понадобятся два разных контроллера, и хорошо их определить, используя второй подход. Используйте этот тип контроллера для инициализации области с данными, функциями, часами и т. Д. И обратитесь к контроллеру в своем представлении с помощью ng-controller.

Если у вас есть раздел, скажите 'section1' [представляющий основную страницу html], который включен через ng-view, который инкапсулирует как section1, так и section2, , тогда этот вид требует контроллера маршрута.

Не используйте оба подхода для одного вида/маршрута, так как это приведет к созданию двух экземпляров одного контроллера для того же маршрута.

Я хотел бы добавить две ссылки здесь, которые eloborates этот (запрос) и адрес этого запроса (проблемы в определении контроллеров в двух местах)

https://groups.google.com/forum/?fromgroups=#!topic/angular/52zE0ibOAgk

AngularJS can a $on method be called more than once for a single $broadcast?