banderos120
@banderos120
Играю на балалайке

Правильный подход к организации вывода данных с сервера в Angular?

Здравствуйте.
В приложении на Angular есть модель Brief :
angular.module('Application').factory('Model', function(){
    function Model(){
      this.id = '';
      this.title = '';
      this.description = '';
      this.coverImage = '';
      this.status = '_public';
      this.skills = [];
      this.category = [];
      this.budgetFrom = 1;
      this.budgetTo = 1;
      this.firstReview = new Date();
      this.deadline = new Date();
    }

    return Model;
  });

В модель записываются данные, которые потом, в таком же виде отправляются на сервер. На сервере происходит запись.
Так же существует на сайте возможность посмотреть список всех объектов, которые вы создали, для этого есть отдельная страница. На данный момент список объектов выводится средствами php&twig. Конечно, хотелось бы выводить ангуляром, однако чтобы формировать ангуляром, с сервера должны приходить JSON объекты со свойствами, соответствующими Model.
Однако есть некие параметры, которые характерны и рассчитываются для конкретного пользователя. С учетом этих параметров изменяется шаблон вывода каждого объекта (например в одном объекте будет кнопка, в другом нет) из-за этого Model != ResponseModel (это объект с сервера), так как в ResponseModel будут свойства "canFinish", "canContest" например.
  • Если вводить отдельные функции для расчета этих параметров на клиенте, то будут дополнительные запросы на сервер, по каждому объекту, что не есть хорошо.
  • Еще можно создать вторую модель ModelResponse, однако такой подход вводит ограничения на использование сервисов, которые могут работать с Model и придется их дублировать.
  • Есть вариант не использовать Model, а работать на прямую с объектами с сервера, посылать их в шаблон, но тогда нельзя будет работать с сервисами, которые используют Model, и придется писать дополнительный дублирующий код, или трансформеры.

Надеюсь написал понятно. Подскажите наиболее приемлемый вариант.
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
Расширить Model свойствами "canFinish", "canContest" и не парить себе мозг
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 14:51
10000 руб./за проект
25 нояб. 2024, в 14:41
20000 руб./за проект