2014-11-28 2 views
1

Я хотел бы узнать, применимо ли это к использованию двух заводов в AngularJS и в основном назвать один из другого.Использование двух заводов AngularJS

Рассмотрим следующий сценарий:

У меня есть завод, возвращающая массив. Эта фабрика должна проверить, будут ли данные заполнять этот массив уже в локальном хранилище SQL.

Если TRUE, он возвращает данные обратно в мой контроллер.

Если FALSE его предполагается назвать другой Фабрикой, которая потребляет данные из API RESTful. Затем он записывает эти данные в базу данных WebSQL и, наконец, возвращает эти данные.

Этот проект соответствует стандартным шаблонам программного обеспечения? Мне сложно использовать методы AngularJS для моего проекта ...

ответ

3

Вполне нормально вводить один сервис/завод/поставщик в другой.

Вот очень хороший ответ, когда использовать который один - AngularJS: Service vs provider vs factory

В этом particullar сценарии я хотел бы использовать свои услуги в качестве службы SQL и сервиса API. Контроллер только внедряет службу SQL и отправляет туда данные. Затем служба SQL определяет, что делать с данными, если это необходимо, она запрашивает дополнительные данные из службы API, которые сначала должны возвращать обещание и возвращать данные при разрешении. Когда SQL-служба выполняется, он автоматически возвращает данные контроллеру независимо от того, вызвал ли он службу API или нет. Опять же предпочтительнее использовать перспективный шаблон. Контроллер вообще не должен знать об API.

+0

Incidently, я дала ответ на "Service против поставщика против завода" SO вопрос :) – pixelbits

1

Нет ничего плохого в двух фабриках, использующих услуги eachothers.

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>