6

I tried searching for this on various threads, but I can't conclusively understand this.

test.config(['$routeProvider', function($routeProvider){
$routeProvider
    .when('/',
        {
            controller:'SimpleController1',
            templateUrl: 'partials/1.html'
        })
    .when('/xyz',
        {
            controller:'SimpleController1, SimpleController2',
            templateUrl:'partials/2.html'
        })
    .otherwise({ redirectTo: '/'});
}]);

I tried doing the above snippet, but it's not working. Can I do something like this? If yes, then what is it that I'm doing wrong here?

Kshitij
  • 639
  • 1
  • 10
  • 25

1 Answers1

13

Only one controller is allowed and will be assigned to the loading template as the controller in ng-view. No need to define ng-controller in the template for a main controller.

If you need to define multiple controllers I suggest you define one main/parent controller and use that in the routeProvider and then have others already in the template using the ng-controller directive.

or...

Check into using Angular UI's UI-Router : http://angular-ui.github.io/ which is a much more versatile router.

m.e.conroy
  • 3,508
  • 25
  • 27
  • 1
    This is the right answer, but I'd also recommend directives, as directives can have a controller attached to them as well. Repeatable elements in particular can benefit from being setup as directives. – Roman K. Jul 31 '14 at 15:38
  • I figured out UI-Router enough to get started, but I still can't think of a way except creating a parent controller to pass multiple controllers. – Kshitij Jul 31 '14 at 17:49
  • Your last sentence implies you can do this with UI-Router, but I'm guessing, more subtly *you don't have to* with UI-Router. Which is it? – AncientSwordRage Apr 08 '15 at 14:55