Сообщение от evgeniy123
|
На каждой странице у нас блок див в котором или кнопка доступ к странички profile-user или Login В Зависимости пользователь вошел или нет. как бы вы это реализовали если ангулар кэширует данные с шаблоном ?
|
Вот это ближе к телу.
Это на ангуляре делается сотней способов. Ключевые фишки для управления DOM'ом "по условию":
ngShow
ngIf
ngSwitch
ngInclude // ngInclude берёт на вход ангуляр-выражение, так что можно перегружать шаблон по собственному условию, если шаблон кеширован - то и берётся из кеша.
и т.д.
Начни разбираться - быстро сам найдёшь ещё возможности.
Для примера приведу кусочек своей менюшки, меняющийся в зависимости от пары условий:
<ul class="nav navbar-nav pull-right">
*!*
<li ng-show="loginView()" class="divider-vertical"></li>
<li ng-show="loginView()" class="divider-vertical"></li>
<li ng-show="loginView()" ui-sref-active="selected"><a ui-sref="Login">{{menuLoginText()}}</a></li>
*/!*
<li class="divider-vertical"></li>
<li class="divider-vertical"></li>
<li class="divider-vertical"></li>
</ul>
Тут два вида изменений. Во первых, кнопка вообще может быть невидима. Для случайного гостя вход на сайт вообще отсутствует. Чтобы отобразилась кнопка "Вход", нужно нажать другую "особо секретную" кнопку, и где её искать, знают только "посвящённые" зарегистрированные пользователи, которым разрешается редактирование базы. Реализовано посредством
ng-show="loginView()", функция loginView() возвращает булево значение. Второй аспект - текст на кнопке, меняющийся в зависимости от того, залогинился ли пользователь и каковы его права. Реализовано через
<a ui-sref="Login">{{menuLoginText()}}</a>.
Всё работает как часы и мгновенно реагирует на изменения переменных в контроллерах.