Угловая однократная привязка ng-if множественных условий

В моих шаблонах у меня есть много условий, связанных с моими правами пользователя и правами на продукты, например:

<div ng-if="user.rights == 'admin'  || user.rights == 'owner'  || products.rights.technical"></div>

Эти права нельзя изменить, не переходя на новую страницу... поэтому я подумал, что могу использовать одно связывание :: для повышения производительности.

Я старался:

<div ng-if="::(user.rights == 'admin'  || user.rights == 'owner'  || products.rights.technical)"></div>

а также:

<div ng-if="::user.rights == 'admin'  || ::user.rights == 'owner'  || ::products.rights.technical"></div>

но условие, похоже, не работает, есть идеи?


person user2283958    schedule 12.04.2017    source источник
comment
Возможный дубликат Получить одноразовую привязку для работы с ng-if   -  person Groben    schedule 12.04.2017
comment
Какую версию Angular вы используете? Одноразовая привязка доступна только с версии 1.3.   -  person Jaydo    schedule 12.04.2017
comment
упс, я использую angular 1.5.8   -  person user2283958    schedule 12.04.2017


Ответы (1)


Возможно, вычислите user.rights == 'admin' || user.rights == 'owner' || products.rights.technical при загрузке страницы и назначьте его другой переменной области видимости (скажем, $scope.isOwnerOrAdmin). А затем используйте одностороннюю привязку, чтобы связать эту переменную с ng-if. например: ng-if="::$scope.isOwnerOrAdmin".

person Sachet Gupta    schedule 12.04.2017
comment
хм, возможно, вы правы, но у меня есть много разных возможностей, в зависимости от страницы, которую я не проверяю на одно и то же право - person user2283958; 12.04.2017