Как загрузить директиву в модуль после создания экземпляра requirejs

Чтобы описать мое препятствие, немного назад история. Я вставлял все файлы путей requirejs (в основном директивы), которые содержат любую директиву к моему основному модулю в app.js, которая работала идеально. Это как

define(['angularAMD', 'angular-route', 'angular-resource', 'angularTranslate', 'angularTranslateLoaderStaticFiles', 'bootstrap', 'angular-idle', 'loadingMaskDirective', 'multiselectDirective', 'treeview.directive', 'tabs', 'checklist.directive'], function(angularAMD) { 
var app = angular.module("myApp", ["ngRoute", "ngResource", "ngTable", "myApp.directives", 'ui.bootstrap', 'flow']);
app.config(....){
/**some route provider**/
}...
angularAMD.bootstrap(app);
return app;

Я определил все директивы, а также ввел их в основной модуль. Но я хочу определить некоторые директивы в их индивидуальном контроллере, чтобы уменьшить начальную нагрузку. Должен быть какой-то метод. Правильно!!

И код в моей директиве js-файлов выглядит так...

define(['angular'], function() {
angular.module('myApp').directive('SomeDirective',
        ['$parse', '$compile', '$rootScope', '$filter', function($parse, $compile, $rootScope, $filter) {
.........

Поэтому, когда я пытаюсь определить то же самое в контроллере страницы, а не в app.js, это не работает. Однако я поражен, что фабричная функция в этом случае работает, но не директива.

Любая помощь будет оценена. Спасибо

1 ответ

Решение

Вы пытались использовать приложение для создания директивы?

define(['app'], function(app) {
app.directive('SomeDirective',
        ['$parse', '$compile', '$rootScope', '$filter', function($parse, $compile, $rootScope, $filter) {
.........

Альтернатива предоставлена angularAMD является:

define(['angularAMD'], function(angularAMD) {
angularAMD.directive('SomeDirective',
        ['$parse', '$compile', '$rootScope', '$filter', function($parse, $compile, $rootScope, $filter) {
.........

Преимущество второго подхода состоит в том, чтобы разрешить загрузку директивы перед загрузкой вашего app.js, См. Загрузка приложения Wide Module для более подробной информации.

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