使用两个工厂AngularJS

时间:2014-11-28 09:52:21

标签: javascript angularjs factory

我想知道它是否适用于在AngularJS中使用两个工厂并且基本上从另一个工厂中调用一个工厂。

考虑这个场景:

我有一个工厂返回一个数组。此工厂应该验证填充此数组的数据是否已存在于本地SQL存储中。

如果 TRUE ,则会将此数据返回给我的控制器。

如果 FALSE ,它应该调用另一个使用RESTful API数据的Factory。然后它将此数据写入WebSQL DB并最终返回此数据。

此设计是否遵循标准软件模式?我很难将AngularJS技术应用到我的项目......

3 个答案:

答案 0 :(得分:3)

将一个服务/工厂/提供商注入另一个服务/工厂/提供商是完全没问题的。

这是一个非常好的答案,何时使用哪一个 - AngularJS: Service vs provider vs factory

在这个特定的场景中,我会将您的服务用作SQL服务和API服务。 Controller只注入SQL服务并在那里发送数据。然后,SQL服务确定如何处理数据,如果需要,它会从API服务请求其他数据,这些数据应首先返回promise并在resolve上返回数据。当SQL服务完成时,它会独立地向控制器返回数据,无论它是否称为API服务。再次优选使用promise模式。控制器根本不需要知道API。

答案 1 :(得分:1)

两家工厂使用各自的服务并没有错。

答案 2 :(得分:1)

AngularJS带有一个内置的依赖注入机制,这就是共享资源,就像你希望2工厂互相使用一样我在这里举一个简单的例子如何做到这一点 这是你的角度剧本

var app = angular.module('yiiframe-factoryApp', ['ngRoute']);
 app.factory("myFactory1", function() {
    return "Controller";
});

app.factory("myFactory2", function(myFactory1) {
    return "factory" + myFactory1;
});
function factoryController($scope, myFactory2) {
    $scope.ctrlName = myFactory2;
}

这是你的观点

<div ng-app="yiiframe-factoryApp" class="container">
    <div ng-controller="factoryController" class="page-content">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h3 class="modal-title">Angularjs Factory example</h3>
                </div>
                <div class="modal-body">
                    {{ctrlName}}
                </div>
            </div>
        </div>
    </div>
</div>