Смотрите этот код плунжера (Обратите внимание на сообщения console.log), чтобы понять, что я пытаюсь сказать/спросить.
Я определил 3 модуля, а именно myApp
, myApp.view1
, myApp.view2
. Только модуль myApp
имеет зависимость, объявленную на другом 2.
модуль myApp
angular.module('myApp', ['ngRoute','myApp.view1','myApp.view2'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.otherwise({redirectTo: '/view1'});
}])
.value('author', 'Suman Barick')
модуль myApp.view1
angular.module('myApp.view1', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/view1', {
template: 'Welcome to view ONE',
controller: 'View1Ctrl'
});
}])
.controller('View1Ctrl', ['author', function(author) {
console.log('*******************************************');
console.log('I am on view1 module');
console.log('Printing author value from myApp module ' + author);
console.log('*******************************************');
}])
.value('view1_var', 'Hi, I am defined as value in myApp.view1 module')
.service('serviceV1', function(){
this.getData = function(){return 'abcdef';}
console.log('This is a service from myApp.view1 module');
})
модуль myApp.view2
angular.module('myApp.view2', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/view2', {
template: 'Welcome to view TWO',
controller: 'View2Ctrl'
});
}])
.controller('View2Ctrl', ['view1_var','serviceV1', function(view1_var, serviceV1) {
console.log('*******************************************');
console.log('Look I am accessing view1_var and serviceV1 of view1 module... from view2 module');
console.log(view1_var);
console.log(serviceV1.getData());
console.log('*******************************************');
}]);
Мои сомнения/вопросы:
-
Почему модуль "myApp.view1" может получить доступ к значению "автор", определенному в модуле "myApp". "myApp" имеет зависимость от "myApp.view1", но не наоборот.
-
Более интересно, "myApp.view1" и "myApp.view2" - это 2 полностью отдельный модуль. Затем, как получилось, что "myApp.view2" обращается к
view1_var
иserviceV1
из "myApp.view1", даже не заявляя о какой-либо зависимости от него? -
Является ли это предполагаемым дизайном/поведением? Тогда какие другие вещи я могу определить в одном модуле, но использовать его в любом другом модуле независимо от их зависимости между собой?
Может кто-нибудь объяснит?