2013-12-26 5 views
0

Я пытаюсь держать контроллер моего углового приложения тонким. Я извлек логику данных и переместил их в службу. Интересно, целесообразно ли переместить логику пользовательского интерфейса, связанную с логикой данных, в службу (пример: отображение формы в модальном элементе перед отправкой данных формы на сервер)?Использование modal внутри службы в Angular

Например

angular.module('App').service('DocumentService', function($modal, $q, $http) { 

    var modalPromise = { 
     template: 'newDocumentForm.html', 
     persist: true, 
     show: false, 
     scope: $scope 
    }; 

    this.createNewDocument = function() { 
     // show form in modal 
    } 

    this.submitDocument = function() { 
     // submit new document using $http 
    } 


}) 

ответ

1

Есть две стороны медали.

Первая сторона очевидна: да, вы можете использовать $modal в службе. $modal сверху есть один способ, open(). Спецификации представления, связанные с отображением вашего модального материала, могут быть безопасно отделены от потребителей и сообщаться обратно с использованием обещаний result или opened, полученных по обещанию, возвращенному open, и, конечно же, у вас также есть события в вашем распоряжении, чтобы поддерживать модальность и потребителей свободно в сочетании.

Оборотная сторона этой медали является то, что услуги не являются, как правило, лучшим местом, чтобы инкапсулировать логику для пользовательского интерфейса, поскольку они являются UI агностика и, следовательно, не является частью вида трубопровода, и могут быть упорно негибкими или трудно манипулировать в вашем UI рабочие процессы. Иногда люди неправильно понимают, что услуги - это просто место для консолидации кода многократного использования и ввода их в потребителей. IMHO, они представляют состояние и/или ресурс, который совместно используется компонентами в приложении.

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

Например, перед удалением документа, возможно, возникнет необходимость в активизации диалога подтверждения/предупреждения, и сомневается в том, есть ли какая-либо польза для разделения этого диалога на беспокойство каждого контроллера, который позволяет выполнить Удалить. Проблема заключается в том, начинаете ли вы собирать многочисленные и/или более сложные пользовательские интерфейсы для других событий, связанных с документами, и пытаетесь отделить их от того, как они используются в разных точках приложения.

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