Директива доступа из другого модуля

У меня есть два разных модуля, первый содержит контроллер, вторая директива.

В основном я хочу directive быть оказанным в моем view, Но, как modules за directive а также controller разные, это дает ошибку.

Если я дам то же самое module тогда это решает мою проблему, я хочу универсальный модуль, обслуживающий все контроллеры.

controller

angular.module('SlamModuleCtrl')
        .controller('SlambookExt',['$scope','$route','SlambookCollection', function($scope,$route) {
            console.log("slam controller")
        }]);

Directive

angular.module('Genericmodule')
    .directive('appVersion', ['version', function (version) {
       return {
    restrict: 'E',  
    template: '<h1>version1</h1>'
    } 
    }])

View

 <div ng-controller="SlambookExt">
     <app-version>1</app-version>
    </div>

2 ответа

Решение

При создании экземпляра slamModuleCtrlнужно указать genericModule как зависимость.

Или используйте родительский модуль, который загружает оба этих модуля как зависимости, и используйте этот родительский модуль как ng-app,

angular.module('parentModule',['slamModuleCtrl','genericModue'])

Это просто правдоподобное решение, потому что оба ваших модуля выглядят как раз для меня. Итак, я предполагаю, что версия не отображается, потому что модуль не был загружен

Chanthu правильно, вам нужно указать родительский модуль, который имеет зависимости от других ваших модулей, но вы также передаете массив зависимостей для других ваших модулей, в этом случае они не имеют их.

объявите свои модули и добавьте их в родительский модуль следующим образом...

var controllerModule = angular.module('controllerModule', []);

var directiveModule = angular.module('directiveModule', []);


controllerModule.controller('mainController', function($scope) {
  $scope.hello = 'Hello';
})


directiveModule.directive('myDirective', function() {
  return {
    template: '{{hello}}'
  };
});

angular.module('app', ['controllerModule', 'directiveModule']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>

<body ng-app="app" ng-controller="mainController">

  <my-directive></my-directive>

</body>

фрагмент кода показывает другую директиву модуля и использует привязку от другого контроллера модуля

Другие вопросы по тегам