2015-11-28 2 views
-1

В платформе, которую я создаю, есть пользователи, с которыми вы можете следить или отменить подписку. Кроме того, если вы просматриваете свой профиль, вы можете его отредактировать (а не следовать ему).Профиль пользователя Публичный и закрытый профиль пользователя в AngularJS

В настоящее время у меня есть один штат/профиль /: идентификатор, который отображает профиль пользователя с angularjs

У меня есть один шаблон _profile.html и контроллер profileCrtl. Контроллер отвечает за проверку подлинности профиля и, следовательно, для установки разных переменных для отображения разных тегов HTML. Например, если пользователь видит свой профиль, мы не будем показывать следующую кнопку. Вместо этого он/она увидит кнопку редактирования, позволяющую пользователю редактировать свой профиль.

Проблема с этим подходом заключается в том, что porfileCtrl и _profile.html отвечают за , что позволяет управлять общедоступным профилем пользователя и видом личного профиля, и я думаю, что это не очень хороший шаблон дизайна.

Я рассматриваю три решения, чтобы улучшить мой код:

  1. Чтобы использовать два шаблона, _publicProfile и _privateProfile и оставить только один контроллер profileCtrl. У нас будет два состояния.

  2. Чтобы использовать два шаблона, _publicProfile и _privateProfile и иметь два контроллера. profilePublicCtrl и profilePrivateCtrl. (Я считаю, что это может быть лучшим решением). У нас будет два состояния.

  3. Чтобы иметь только одно состояние и изменить templateUrl динамически, если пользователь является аутентифицированным пользователем или публичным пользователем.

Как вы думаете, а лучшее решение? Есть ли у вас альтернатива тем, которые были рассмотрены выше? Когда и где код должен ли я проверять, является ли профиль, просматриваемый пользователем, общедоступным профилем или профилем пользователя?

Я уже искал много ответов в Интернете, и, похоже, много мнений, и мне трудно понять, что является лучшим шаблоном дизайна.

+0

Нет «лучшего подхода». Вы решаете, нужно ли вам 2 шаблона или 1 с некоторым ng-if. Больше ничего не сказал. –

+0

Я не думаю, что это очень безопасно, если клиентский код контролирует доступ к частной информации. – Fuhrmanator

+0

Фантастический минус, и я не могу удалить сообщение. –

ответ

1

Я столкнулся с одной и той же проблемой с моим приложением, и я считаю, что наилучшим подходом было бы использовать разные шаблоны и отдельный контроллер для обоих видов. Объяснение всех сценариев здесь.

1) Вы можете использовать первый подход для использования с разными шаблонами с одним и тем же контроллером, но я не буду этого делать, всегда старайтесь предоставить выделенный шаблон вашим шаблонам.
2) Использование для разных контроллеров с выделенными видами - лучший подход здесь. В этом случае вы получите полный контроль над тем, какие данные будут отображаться в общедоступном профиле и что показывать в приватном профиле.
- Но проблема с этим подходом заключается в том, что у вас будет много дублирующегося кода на обоих шаблонах.
3) Это также хорошо, если вы можете хорошо управлять им в шаблоне своего профиля. Вы должны управлять условиями, основанными на пользовательских входах каждый раз.

Или вы можете создать отдельную директиву, которая будет принимать некоторые параметры и управлять всеми общедоступными/частными условиями в этой директиве.В рамках одного кода вы получите повторно используемый профиль пользователя, и вы можете использовать эту директиву везде, где хотите показать профиль пользователя.