2015-04-29 3 views
0

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

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; 

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

И код в моей ДИРЕКТИВА файлов выглядит расслоение плотной, как ..

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

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

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

ответ

2

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

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) { 
......... 

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

+0

Спасибо @marcoseu, первый метод не работает. Пробовал это, хотя второй обеспечивает решение моей проблемы. Итак, здесь angularAMD регистрирует директиву для моего основного модуля и согласно ** angularAMD. <> **, могу ли я использовать поставщиков, таких как фабрика, сервис, контроллер и т. Д. В разделе рецептов? Еще раз спасибо за решение. –

+0

Мы можем использовать app.register.directive, чтобы первое решение работало. Я думаю, что реестр предоставляет поставщикам возможность использовать их. –

+0

@GautamKumarSamal обязательно проверьте версию angularAMD, которую вы используете. 'App.register. <> 'устарел в пользу приложения' '. <> '. – marcoseu

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

  • Нет связанных вопросов^_^