2016-02-17 3 views
1

Я использую params для динамического маршрутизации URL-адресов для разных HTML.Динамически установить контроллер для просмотра с помощью ngRoute в AngularJS

Есть ли способ установить различные контроллеры для этих видов? Или я должен отдельно направлять их и использовать controller и controllerAs для установки контроллера?

Поскольку все шаблоны полностью функционально отличаются, правильно ли это делать? Я знаю в более общем случае, такой способ используется только для спокойного запроса. Если нет, есть ли лучший способ маршрутизации разных URL-адресов на другой шаблон?

angular.module('application',['ngRoute']) 
.config(['$routeProvider',function($routeProvider){ 
    $routeProvider 
     .when('/',{ 
      templateUrl: 'src/app/other/homepage.html' 
     }) 
     .when('/:category/:page',{ 
      templateUrl: function(params) { 
       return 'src/app/'+params.category+'/'+params.page+'.html'; 
      } 
     }) 
     .otherwise({ 
      redirectTo: '/' 
     }); 
}]); 

ответ

2

Вместо определения controller в вашем отображении маршрутизатора, просто определить их в HTML с помощью ng-controller.

Теперь каждый вид или HTML будет отвечать за инициализацию контроллера.

Как для: src/app/fruit/apple.html (при просмотре: /fruit/apple)

<div ng-controller="AppleController"> 
    <!-- Apple content --> 
</div> 

для: src/app/fruit/orange.html (при просмотре: /fruit/orange)

<div ng-controller="OrangeController"> 
    <!-- Orange content --> 
</div> 
+0

Да, набор контроллеров в шаблонах. –

+1

Большое спасибо! Это действительно работает! Могу ли я понять так: ngRoute сначала включит шаблон в директиву ng-view, а затем начнет работать вся другая директива angularjs? И поэтому ng-app все еще работает для контроллера в шаблонах? – SmartFingers

+0

Да точно. Так оно и будет работать. :-) –

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