2015-03-23 5 views
0

Я пытаюсь отделить свое приложение от разных модулей и впрыскивать фабрики в контроллеры Я думаю, что это очень близко, просто нужно помочь найти пробел. Любая помощь приветствуется.инъекционные модули с угловым

index.html

<body ng:app='module_1'> 
<script src="js/scripts/module_1.js'"></script> 
<script src="js/scripts/dD/module_2.js"></script> 
<script src="js/scripts/dD/module_3.js"></script> 

module_1.js

angular.module('module_1', ['ngCookies','module_2','module_3']) 

module_2.js

angular.module('module_2', []) 
    .factory('module_2_Fact', ['$scope', function() { 

     function test() { 
      return "test" 
     } 

     return { 
     test:test 
     } 


}]); 

module_3.js

angular.module('module_3', ['module_2']) 

    .controller('module_3_Ctrl', ['$scope', function(module_2_Fact) { 

     console.log(module_2_Fact.test); // == > undefined 

    }]); 

module_2_Fact.test возвращается Не удается прочитать свойство 'тест' неопределенной

кажется как module_3 не может найти module_2

+0

Я бы подумал, что 'module_2' потерпит крах из-за того, что переменная' test' не определена –

+0

Вы не вводите правильно в co ntroller функции module_3. Вы указали '$ scope' и не использовали его, и не указали' module_2_Fact' –

+0

да, но я пытаюсь выяснить, почему, теоретически все сервисы/фабрики должны быть доступны через модуль в этом шаблоне – mattwilsn

ответ

1

Пожалуйста, удалите '$scope' из module_2_Fact

angular.module('module_1', ['module_2', 'module_3']).controller('MainCtrl', function($scope, module_2_Fact) { 
 

 
    $scope.name = "Charlie"; 
 
    console.log(module_2_Fact.test) 
 
    $scope.data = module_2_Fact.test(); 
 

 

 
}) 
 

 
angular.module('module_2', []) 
 
    .factory('module_2_Fact', [ 
 
    function() { 
 

 
     function test() { 
 
     return { 
 
      test: "that's my test" 
 
     } 
 
     } 
 

 
     return { 
 
     test: test 
 
     } 
 

 

 
    } 
 
    ]); 
 

 
angular.module('module_3', ['module_2']) 
 

 
.controller('module_3_Ctrl', ['$scope', 
 
    function(module_2_Fact) { 
 

 
    console.log(module_2_Fact.test); // == > undefined 
 

 
    } 
 
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="module_1"> 
 

 

 

 
    <div ng-controller="MainCtrl"> 
 
    <p>Hello {{name}}!</p> 
 
    <p>{{data| json}}</p> 
 
    </div>

+0

Я вижу, спасибо за исправление она работает когда модуль_2 вводится в модуль_1, все хорошо. Однако он не работает, когда module_2 вводится в модуль_3 http://plnkr.co/edit/DnxZNELKiW9hyjIVS3Ty?p=preview как оригинальная проблема указана – mattwilsn

+1

@ user1675557 см. Здесь http://plnkr.co/edit/3Qa6jIunMAUojKzsFwV1?p=preview вам нужно добавить ng-app = "module_3" на ваш взгляд – sylwester

+0

это единственный способ? ? ни один из обучающих программ, которые используют этот метод, имеет более одного нг: app – mattwilsn

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