Javascript AngularJS服务体系结构

Javascript AngularJS服务体系结构,javascript,angularjs,service,Javascript,Angularjs,Service,编辑 简短版本: 比如说我有很多不同的应用数据服务。我如何避免需要将所有这些服务注入显示应用程序状态的每个控制器 编辑 我正在构建我的第一个Angular应用程序。基本设计是我有一个主页,显示大约5个不同变量的值(每个变量都非常复杂)。在这个页面上,应用程序正在收集和分析来自蓝牙的数据。有时,这5个变量和一些蓝牙数据会保存到REST后端,也会保存到设备。这5个变量中的每一个都有更改其值的页面 我已尽力遵循最佳实践。我有非常薄的控制器。我对所有数据使用服务。我实际上只使用$scope在视图和控制器

编辑

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

编辑

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

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

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

我曾尝试将函数分解为其他服务,但遇到了需要从状态服务读取数据,然后写回状态服务的其他属性的问题。如果我将另一个服务注入状态,我也不能将状态注入另一个服务

我曾想过如何拥有许多更小的服务,但我一直在回到将数据保存到服务器的时候。当我这样做的时候,我需要从应用程序的每个角落收集数据以发送。如果所有这些信息都存储在不同的服务中,那么我只需要将它们再次注入到单个服务中

在我写这篇文章的时候,我非常确定我错过了在应用程序中使用$scope的一个大概念

任何指点都将不胜感激

谢谢


Scott

您是否可以将事物划分为子服务,然后使状态服务成为这些子服务的聚合器,然后不将状态注入子服务,而是注入您需要的特定子服务?例如:

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 {
        // ...
    }
});

看起来您需要Redux来帮助您管理应用程序状态

你能列出州和次州服务之间的依赖关系吗?我建议用一两句话清楚地说明你的问题。如果您正在寻找最佳实践,这里可能不是提问的地方。使用这种设计,我是否会将状态注入所有控制器,以便能够绑定到所有数据?是的。它将包含从子服务访问数据所需的所有调用。