Question

I am new to AngularJs.

In app.js I have the following

angular.module('module1', ['module2'])
    .config(function($routeProvider) {
        $routeProvider
            .when('/',
                {
                    controller: 'Controller1',
                    templateUrl: '/app/module/module1/partials/module1.html'
                });
    });

My module1 controller

angular.module('module1').controller('Controller1', function($scope) {
    $scope.module1Name = "Module1";
});

In module2 folder I have Index.js

angular.module('module2', []).config(function($routeProvider) {
    $routeProvider
        .when('/test',
            {
                controller: 'Controller1',
                templateUrl: '/app/module/module2/view/test.html'
            });
});;

Module2 controller

angular.module('module2').controller('Controller1', function ($scope) {
    $scope.module2Name = "Module2";
});

Here is my index.html

<html data-ng-app="module1">
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Angular</title>
    <script src="~/Scripts/angular.min.js"></script>
    <script src="~/App/app.js"></script>
    <script src="~/App/module/module2/index.js"></script>
    <script src="~/App/module/module2/controller/Controller1.js"></script>
    <script src="~/App/module/module1/controller/Controller1.js"></script>

</head>
<body>
    <div data-ng-view=""></div>
</body>
</html>

and module1.html

<div>
    f4b view {{module1Name}}
    <br/>
    <a data-ng-href="#/test">Test page</a>
</div>

and test.html

<div>
    Test view {{module2Name}} <br/>
        <a data-ng-href="#/">f4b page</a>
</div>

when I start the application the module1 name is displayed but when I click the link all I see is "Test view" without module2 {{module2Name}} is not displayed...

Can someone tell me what am I doing wrong? Thank you

Was it helpful?

Solution

Angular's $injector can't disambiguate between controllers that use the same name. One workaround is to manually namespace them:

angular.module('module1').controller('mod1.Controller1', 
...
angular.module('module2').controller('mod2.Controller1', 

jsfiddle

See also https://groups.google.com/d/topic/angular/SZMFAKfx1Q8/discussion

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top