2015-02-11 4 views
0

Позвольте мне сначала объяснить ситуацию. У меня есть приложение «MyApp», которое используется на одной странице для создания некоторого настраиваемого продукта, и в этом приложении у меня есть 4 контроллера. У меня есть 4 кнопки (по одному на контроллер), которые позволяют пользователю добавлять элементы (всего разные объекты).AngularJS - создать модуль или услугу?

Что я хочу сделать, это открыть лайтбокс с полем автозаполнения, когда пользователь нажмет на кнопку. Конечно, автозаполнение должно получить от API с разных маршрутов (в зависимости от контроллера). Поэтому моя идея состояла в том, чтобы заставить контроллер обрабатывать вызов в лайтбокс и получить результат.

Так что в сценарии лучше создать модуль, который обрабатывает все DOM-создание формы лайтбокса/автозаполнения и передавая ему URL-адрес, чтобы получить результаты автозаполнения? и вводить его в MyApp. Или создать службу/фабрику, которая выполняет ту же работу и вводит ее в каждый контроллер?

Я обеспокоен тем, что модуль может переусердствовать над этим, и что у службы может быть слишком много особенностей DOM.

Как вы это сделаете?

Nota: Я новичок в AngularJS ;-)

+0

DOM-манипуляции должны выполняться директивами. –

+0

Да, но директива должна быть «маленькой» в лучшей практике, здесь у меня будет какая-то логика, поэтому, может быть, директива внутри модуля вы имеете в виду? – Mushr00m

+0

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

ответ

0

Почему бы не использовать директиву для создания лайтбокс? Затем ваш html может динамически ссылаться на текущее состояние, передать его директиве, которая затем вызывает вашу службу. Что-то вроде ...

<div lightbox={{state.current.name}}></div> 

.directive('lightbox', function(state) { 
    return lightboxService(state)... 
Смежные вопросы