2015-04-21 40 views
0

编辑角JS服务架构

短的版本: 说我有应用程序数据是许多不同的服务。如何避免需要将所有这些服务注入到显示应用程序状态的每个控制器中?

编辑

我正在构建我的第一个Angular应用程序。基本设计是我有一个主页,显示大约5个不同变量的值(每个变量都很复杂)。在此页面上,该应用程序正在收集和分析来自蓝牙的数据。偶尔,这5个变量和一些蓝牙数据被保存到REST后端,并保存到设备中。这5个变量中的每一个都有页面来改变它们的值。

我已尽力遵循最佳做法。我有非常薄的控制器。我使用所有数据的服务。我真的只使用$ scope在视图和控制器之间绑定数据。

现在我的问题是,我开始使用全局“状态”服务来跟踪这5个变量。我注入任何需要显示状态的控制器,并将html绑定到它。任何时候我想改变任何状态时,我都会调用该状态服务的方法来执行此操作。这很奏效,但现在国家的服务正在变得越来越庞大。

我试图将功能分解为其他服务,但我遇到了需要从State服务读取数据,然后回写到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