angular.js - ng-click="alterCheck()" と ng-click="check=true" の違いは何ですか?
phpcn_u1582
phpcn_u1582 2017-05-15 17:03:45
0
2
629
リーリー

実際のプロジェクトでは、ng-click="check=true"を使用するとクリック後にpが表示されるのですが、ng-click="alterCheck()"が表示されないのはなぜでしょうか。
上記のコードでは、私が述べた現象を再現できません。これを引き起こす可能性のあるその他の理由はありますか?

phpcn_u1582
phpcn_u1582

全員に返信(2)
我想大声告诉你

この例で説明したものと同様の問題を再現できます (以前にも遭遇したことがあり、さらに数回調べました):

リーリー リーリー

これは非常に単純なデモです。ng-repeat を使用して一連のラジオ ボタン ボックスを表示し、次の checkIndex: {{ checkIndex }} でクリック ボタンをクリックします。 は、選択したラジオ ボタンの $index を表示します。ここでオンライン デモをご覧ください: jsfiddleng-repeat显示一组单选框,通过点击点选按钮,在下面的checkIndex: {{ checkIndex }}中显示选中的单选框的$index。在线demo看这里:jsfiddle

如果运行当前的代码,会发现,{{ checkIndex }}压根没有变化,无论你怎么使劲点,戳破鼠标也没用

但如果template换成我注释掉的那部分代码,改用changeCheckIndex方法,{{ checkIndex }}就变化了。

那么问题来了,如何造成这个局面的?我们还是要回到文档去(最近发现ng的文档还是不错的):

我认为原因在于checkIndex = $index的写法,使得checkIndex是一个在每个template instance中独立$scope下的变量,并不是我们在Controller

現在のコードを実行すると、{{ checkIndex }} がまったく変化していないことがわかります。マウスをどれだけ強く押しても無駄です

ただし、template がコメントアウトしたコードの一部に置き換えられ、代わりに changeCheckIndex メソッドが使用される場合、{{ checkIndex }} は変化。 🎜 🎜そこで問題は、この状況がどのようにして起こったのかということです。まだドキュメントに戻る必要があります (最近、ng のドキュメントが非常に優れていることに気付きました): 🎜 🎜🎜 🎜🎜その理由は、 checkIndex = $index の書き方により、 checkIndex が各テンプレート インスタンスの独立した $scope 下の変数になるためだと思います。 Controller で定義したものではありません。 🎜🎜 🎜文書アドレス: ngRepeat🎜
いいねを押す +0
Ty80

値のコピーとオブジェクト参照の違いについては、エラーを再現することができないため、大まかに説明することしかできません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート