0

私の質問は、で複数の条件を使用できるか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は、式全体を 1 回バインドされるものとして設定しますか?

前もって感謝します!

編集:私が興味を持っているのは、同じng-ifに複数の条件があり、1 つが一度バインドされ、もう 1 つがバインドされていない場合です。私が見ているのは、一度バインドされたものがある場合、他の変更はng-ifステートメントに影響しないということです。

4

1 に答える 1

2

bind-once私はこれをテストしましたが、実際にngIfステートメントを作成できることを確認できます。次の例を検討してください。

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

UI が の配列をプログラムで更新しているfruitsとします。2 つのngIf式があるとします。1 つは を使用しbind-once、もう 1 つは通常 (つまり 2 回) バインドされます。

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

この配列への追加を開始するとngIf、条件が満たされたときに 2 番目の式のみがトリガーされることがわかります。

ここに画像の説明を入力

アップデート

したがって、元の質問は に 2 つの式を入れることを目的としていたように見えますngIfが、1 つの式は を使用しbind-onceます。そして興味深いことに、どちらのステートメントも起動しません (以下を参照)。これは少し驚くべきことです。これは、一方向バインド式と双方向バインド式を組み合わせることができないことを示しているようです。最初のngIfでは、最初の条件が正しく評価され、次に 2 番目の式を評価する必要がないため短絡すると予想していましたが、これはたまたま一度バインドされています。しかし、そうではないようです。

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>
于 2016-02-19T21:20:19.227 に答える