5

「ng-if」を含む画像で「ng-mouseover」ディレクティブを使用しようとしていますが、機能しませんが、「ng-show」ディレクティブを使用すると機能します。理由を教えてもらえますか? それともAngularJSの問題ですか?

AngularJS のドキュメントでは、それについて何も読むことができません: https://docs.angularjs.org/api/ng/directive/ngMouseover

NG-ショー

<button ng-show="true" ng-mouseover="countOne = countOne + 1" ng-init="countOne=0">
Increment (when mouse is over)
</button>
Count: {{countOne}}

ng-if

<button ng-if="true" ng-mouseover="countTwo = countTwo + 1" ng-init="countTwo=0">
Increment (when mouse is over)
</button>
Count: {{countTwo}}

フィドル: http://plnkr.co/edit/Wb6bjyJdHj5qoH7fxGFJ?p=info

4

4 に答える 4

6

あなたが観察している動作は、ドキュメントからのngIf仕組みによって引き起こされます

要素が ng-if を使用して削除されると、そのスコープが破棄され、要素が復元されると新しいスコープが作成されることに注意してください。ngIf 内で作成されたスコープは、プロトタイプ継承を使用して親スコープから継承します。これの重要な意味は、ngModel が ngIf 内で使用され、親スコープで定義された JavaScript プリミティブにバインドされている場合です。この場合、子スコープ内の変数に加えられた変更は、親スコープの値をオーバーライド (非表示) します。

これは基本的に、 を使用している$parent場合はを使用する必要があることを意味しますng-if。そのようです:

<button ng-if="true" ng-mouseover="$parent.countTwo = countTwo + 1" ng-init="$parent.countTwo=0">
于 2015-09-01T14:33:02.793 に答える
0

あなたは使っng-ifているのだから使わなければならない$parent

ワーキングプランカー

ng-if

<button ng-if="true" ng-mouseover="$parent.countTwo = countTwo + 1" ng-init="$parent.countTwo=0">
Increment (when mouse is over)
</button>
Count: {{countTwo}}
于 2015-09-01T14:29:23.050 に答える
0

これは、 $event がそのバインディングの範囲外にあるためだと思います。

here is an example:

http://plnkr.co/edit/Wb6bjyJdHj5qoH7fxGFJ?p=preview
于 2015-09-01T15:51:01.770 に答える