2015-02-10 2 views
0

Прежде всего, я открываю AngularJS. Я читал много курсов об этом, но я далеко не знаком с этим.AngularJS, загрузочный модуль

У меня есть проект, если я не могу изменить предыдущие объявления. Я хочу добавить wysiwyg в проект.

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

Я думал, что это было бы хорошо:

angular.module('demo') 
    .controller('WysiwygCtrl', ['colorpicker.module', 'wysiwyg.module', function($scope) { 
    $scope.data = { 
     text: "hello" 
    } 
}]); 

Но это не работает.

В самом деле, проще всего было бы:

angular.module('demo', ['colorpicker.module', 'wysiwyg.module']) 
    .controller('WysiwygCtrl', function($scope) { 
    $scope.data = { 
     text: "hello" 
    } 
}); 

Но он создает новый модуль и я развязывать предыдущий ...

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

Спасибо за помощь, я столкнулся с этой проблемой с утра.

EDIT1: WYSIWYG библиотека размещается на GitHub здесь https://github.com/TerryMooreII/angular-wysiwyg

EDIT2: На данный момент ничего не отображается, потому что у меня есть следующее сообщение об ошибке: Error: [$injector:unpr] http://errors.angularjs.org/1.2.16/$injector/unpr?p0=colorpicker.moduleProvider%20%3C-%20colorpicker.module

+0

Так вы говорите, вы хотите получить доступ к wysiwyg.module в коде контроллера WysiwygCtrl? – mindparse

+0

@mindparse я не знаю ... Этот код работает: 'вар приложение = angular.module ('приложение', [ 'colorpicker.module', 'wysiwyg.module']) app.controller (» MyCtrl ', функция ($ scope) { $ scope.data = { текст: "hello" } }) 'Теперь я хотел бы знать, почему мой не работает – Maxime

+0

Так что же конкретно не работает? Вы видите, что «hello» появляется в редакторе wysiwyg? – mindparse

ответ

1

angular.module('moduleName', ['dep1', 'dep2']) - создает модуль, который имеет зависимости перечисленных во втором параметре эта подпись также возвращает вновь созданный модуль, вы должны указать список зависимостей, даже если это всего лишь пустой массив []. Это также перезаписывает любые существующие модули с тем же именем.

angular.module('moduleName') - возвращает модуль, созданный ранее в вашем коде, следовательно, отсутствие списка зависимостей в сигнатуре - это также возвращает модуль.

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

+0

ok, но зная, что я не могу доработать модуль раньше, есть способ добавить зависимости? '['colorpicker.module', 'wysiwyg.module']'? – Maxime

+0

@Maxime - no, вы должны указать все зависимости перед фронтом –

+0

Черт ... Лучше всего было бы объявить модуль, сохранить его в var и использовать этот var после .... но здесь? Это большой беспорядок, и я потерялся – Maxime

1

Кроме того, я думаю, вы должны быть переходящие в ссылках на них модули в функции

.controller('WysiwygCtrl', ['$scope', 'colorpicker.module', 'wysiwyg.module', function($scope, colorpickermodule, wysiwygmodule) { 
    $scope.data = { 
     text: "hello" 
    } 
} 
+0

Я пытался, все еще получаю ошибку – Maxime

+0

'Ошибка: [$ injector: unpr] http://errors.angularjs.org/1.2.16/$injector/unpr?p0=colorpicker.moduleProvider%20%3C-%20colorpicker.module ' – Maxime

0

Если используется обозначение массива при создании компонентов в качестве контроллеров или директив, то параметры на главной функции или модуле должны совпадать. Как я вижу, что вы используете

.controller('WysiwygCtrl', ['colorpicker.module', 'wysiwyg.module', function($scope) { 
$scope.data = { 
    text: "hello" 
} 

вы, возможно, хотите сказать

.controller('WysiwygCtrl', ['$scope', 'colorpicker.module', 'wysiwyg.module', function($scope) { 
$scope.data = { 
    text: "hello" 
} 
+0

Я попытался добавить '$ scope', но у меня все еще есть ошибка:' Ошибка: [$ injector: unpr] http://errors.angularjs.org/1.2.16/$injector/unpr?p0=colorpicker. moduleProvider% 20% 3C-% 20colorpicker.module' – Maxime

+0

Он не может найти службу colorpicker.module. Вы должны убедиться, что вы объявите его, прежде чем пытаться вставить его в другой компонент в качестве зависимости – Raulucco