2016-02-19 3 views
0

Мой вопрос не в том, можете ли вы использовать несколько условий в ng-if, но возможно ли иметь ng-if только с некоторыми условиями, связанными один раз, в то время как другие следят за обновлениями?Возможно иметь угловой ng-if с несколькими условиями, некоторые связаны один раз, некоторые двусторонние?

В качестве простого примера, если я хочу, чтобы связать имя один раз, но есть тумблер госсобственность, что я хочу, чтобы следить за обновлениями: <span ng-if="::page.name === 'something' && page.viewEnabled">Correct page, and the view is enabled!</span>

Я бы ожидать, что переключение на page.viewEnabled предполагая, что это логическое, приведет к исчезновению пролета. Это, похоже, не так (с использованием Angular 1.3.11).

Устанавливает ли одноразовое обязательство на ::page.name все выражение как связанное однократно?

Заранее благодарен!

EDIT: Что мне интересно, если у вас несколько условий в одном ng-if, один из которых связан один раз, а другой нет. Я вижу, что если у вас есть тот, который связан один раз, другое изменение не повлияет на оператор ng-if.

ответ

2

Я только что проверил это и могу подтвердить, что вы действительно можете сделать bind-once в заявлении ngIf. Рассмотрим следующий пример:

https://plnkr.co/edit/m32BBBYlNffxTfggb33g?p=preview

Произнесите интерфейс программно обновить массив fruits, и скажем, у нас есть два ngIf выражения: один использует bind-once, другой связан обычно (т.е. в два раза):

<div ng-if="::fruits.length > 3">More than three fruits!</div> 
<div ng-if="fruits.length > 3">More than three fruits!</div> 

Если мы начинаем добавлять к этому массиву, отметим, что только второе ngIf выражение срабатывает, когда условие:

enter image description here

UPDATE

Так это выглядит, как если бы первоначальный вопрос был более редукторным в стороне ввода два (2) выражений в ngIf, но там, где одно выражения использует bind-once. И, что интересно, ни одно из операторов не срабатывает (см. Ниже), что немного удивительно, что, по-видимому, указывает на то, что вы не можете комбинировать одно и двухсторонние связанные выражения. В первом ngIf я бы ожидал, что первое условие будет оценено правдиво, а затем короткое замыкание, так как ему не нужно оценивать второе выражение, которое, как оказалось, связано однажды. Но, похоже, это не так.

Plunkr был обновлен.

<div ng-if="fruits.length > 3 || ::fruits.length > 3">1.) More than three fruits!</div> 
    <div ng-if="::fruits.length > 3 || fruits.length > 3">2.) More than three fruits!</div> 
+1

Извините, возможно, мой первоначальный вопрос не был ужасно ясным. Я спрашиваю, могу ли вы сказать, что два значения в инструкции nf-if, один из которых связан один раз, другой просматривает обновления. Но и в том же заявлении. То, что я вижу в результате, заключается в том, что если один связан один раз, другой (даже если он обновлен) не повлияет на ng-if. – user1331784