Il semble que je perds de la portée sur mon contrôleur angulaire lorsque j'essaie d'abstraire mes modules Angularjs.Perdre de la portée entre les modules angulaires en utilisant ng-view
Cela fonctionne très bien si j'utilise mon module d'application, mais dès que je change le module home.js en app.layout, $ scope ne fonctionne plus.
Quelqu'un peut-il repérer un problème ici?
_Layout.html (à gauche sur la tête et comprend)
<body class="docs-body" ng-app="app">
<div layout="column" ng-cloak>
<section layout="row" flex>
<div ng-include="'App/layout/sidenav.html'"></div>
<md-content class="_md layout-column flex" layout="column" flex="">
<div ng-include="'App/layout/toolbar.html'"></div>
<div class="container body-content">
@RenderBody()
</div>
</md-content>
</section>
</div>
</body>
@RenderBody() amène à Index.html
<!-- this is where content will be injected -->
<div ng-view></div>
Home.html
<div>
<h1>Home Page</h1>
<p>{{ message }}</p>
</div>
Mon application. js
angular.
.module('app', [
'app.core',
'app.layout',
]);
})();
layout.module.js
(function() {
'use strict';
angular.module('app.layout', [
'ngAnimate',
'ngMaterial',
'ngAria'
]);
})();
core.module.js
(function() {
'use strict';
angular.module('app.core', [
'ngRoute'
]);
})();
et route.js:
angular.module('app.core')
.config(function ($routeProvider, $locationProvider) {
$routeProvider
// route for the home page
.when('/', {
templateUrl: 'App/layout/home.html',
controller: 'home'
});// End routeprovider
})// end config
Enfin le coupable ... Home.js
(function() {
'use strict';
console.log('registering controller home before Angular');
angular
.module('app.layout')
.controller('home', home);
home.$inject = ['$scope'];
function home($scope) {
console.log('registering controller home');
// create a message to display in our view
$scope.message = 'Everyone come and see how good I look!';
}
})();
Maintenant, quand je
.module('app);
.controller('home', home);
sur home.js, les scope.message $ affiche
'Everyone come and see how good I look!'
mais si j'ai
.module('app.layout')
.controller('home', home);
il affiche
{{message}}
Je sais que je suis en train de perdre la portée d'une manière ou d'une autre ici, mais je n'arrive pas à trouver une solution! Ai-je besoin de déclarer à nouveau le contrôleur en dehors du routeur?
J'ai essayé d'injecter app.layout dans le module principal, mais il ne construit toujours pas le contrôleur lorsque je débogue. J'ai également essayé d'injecter le noyau dans la mise en page mais il ne le construit toujours pas. Il semble que je ne puisse pas accéder au contrôleur de la maison, mais j'essaie toujours de comprendre les dépendances sur les modules et comment accéder aux autres entre chaque module. – cptHoek
avez-vous vu l'erreur dans la console? –
Dit le contrôleur avec le nom «maison» n'est pas enregistré, ce qui est logique voir comment il ne peut pas le construire – cptHoek