2015-04-21 17 views
0

EDITУгловая JS Service Architecture

Короткая версия: Скажем, у меня есть данные программы много различных услуг. Как мне обойтись, нужно внедрять все эти службы в каждый контроллер, который отображает состояние приложения?

EDIT

Я строю свой первый Угловое приложение. Основной дизайн: у меня есть домашняя страница, которая показывает значение около 5 различных переменных (которые кажутся довольно сложными). Хотя на этой странице приложение собирает и анализирует данные из bluetooth. Иногда эти 5 переменных и некоторые данные bluetooth сохраняются на задней панели REST, а также сохраняются на устройстве. Существуют страницы для каждой из этих 5 переменных, чтобы изменить их значение.

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

Моя проблема в том, что я начал с глобальной службы «Состояние», чтобы отслеживать эти 5 переменных. Я вставляю в любой контроллер, который должен отображать состояние и привязывать его к html. Каждый раз, когда я хочу изменить какое-либо состояние, я вызываю метод этой государственной службы для этого. Это сработало хорошо, но теперь государственная служба становится огромной.

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

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

Как я пишу это, я уверен, что мне не хватает большой концепции с использованием $ scope в приложении.

Все указатели будут оценены,

Спасибо,

Скотт

+0

Вы можете перечислить свои зависимости между государственными и суб-государственных услуг? – Trevor

+0

Я рекомендую четко указать вашу проблему в 1 или 2 предложениях. Если вы ищете лучшие практики, это, возможно, не место, чтобы спросить. – ShadowCat7

ответ

0

Не могли бы вы разделить вещи на суб-услуг, а затем сделать Государственной службы агрегатор для этих суб-услуг, то вместо впрыскивающего состояния в под-сервисы, вы вводите конкретную под-услугу, которая вам нужна? Например .:

var app = angular.module('services', []); 

app.service('sub1', function(){ 

    return { 
     // ... 
    } 
}); 

app.service('sub2', function(sub1){ 

    var data = sub1.getData(); 
    data.prop = 'new_value'; 
    sub1.setData(data); 

    return { 
     // ... 
    } 
}); 

app.service('State', function(sub1, sub2){ 

    var data = sub1.getData(); 
    data.prop = 'new_value'; 
    sub1.setData(data); 

    var data = sub2.getData(); 
    data.prop = 'new_value'; 
    sub2.setData(data); 

    return { 
     // ... 
    } 
}); 
+0

С этой конструкцией я бы тогда ввел состояние во все мои контроллеры, чтобы иметь возможность привязываться ко всем данным? –

+0

Да. Он будет содержать все необходимые вызовы для доступа к данным из под-служб. – Trevor

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