Как загрузить директиву в модуль после создания экземпляра 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 для более подробной информации.