我想知道它是否适用于在AngularJS中使用两个工厂并且基本上从另一个工厂中调用一个工厂。
考虑这个场景:
我有一个工厂返回一个数组。此工厂应该验证填充此数组的数据是否已存在于本地SQL存储中。
如果 TRUE ,则会将此数据返回给我的控制器。
如果 FALSE ,它应该调用另一个使用RESTful API数据的Factory。然后它将此数据写入WebSQL DB并最终返回此数据。
此设计是否遵循标准软件模式?我很难将AngularJS技术应用到我的项目......
答案 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>