angular.js - angularJS ng-repeat
天蓬老师
天蓬老师 2017-05-15 16:54:09
0
2
570

このページは ng-repeat を使用してビューを生成します。コントローラーの ng-repeat の ng-model を変更しました。ビューが変更されないのはなぜですか?

リーリー

$scope.tds が初めて更新されると、ビューが変更されます。ただし、$scope.tds に値が再度割り当てられると、ビューは変更されなくなります。
しかし、$scope.tds の長さが変更されると、ビューが変更されるのはなぜでしょうか。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(2)
習慣沉默

まず最初に、コード内の 2 つの 命名の問題についてお話したいと思います。

  1. "td in td"なんと、Angular は実際に正しく実行できます。 2 つの名前を区別することをお勧めします。たとえば、td in tds に変更します。
  2. "td in td"是什么鬼,Angular居然也可以正确地执行。建议区别这两个名称,比如改成td in tds
  3. ab这样命名确实可以,不过写控制器时是不是经常要想一想a是什么?哦,是$scope。为何不直接命名为$scope

好了不啰嗦了,回答你的问题。在a.td = []的时候,a.td引用了另外一个数组,原有数组并未改变。而模板中绑定的是原有数组。这确实是AngularJS的一个坑,但你最好用pushpopsplice このように ab に名前を付けるのは問題ありませんが、コントローラーを作成するときは、a が何であるかを常に考える必要がありますか?ああ、$scope です。 $scope という名前を付けてみてはいかがでしょうか。

それでは、さっそく質問に答えていきましょう。 a.td = [] の場合、a.td は別の配列を参照し、元の配列は変更されません。元の配列はテンプレートにバインドされています。

これは確かに AngularJS の落とし穴です
が、配列を操作するには pushpopsplice などを使用した方がよいでしょう。配列全体を置き換えたい場合は、次のようにすることをお勧めします:

リーリー 🎜AngularJS のデータ バインディング メカニズムと更新プロセスの詳細については、次の記事を参照してください: 🎜http://harttle.github.io/2015/06/06/angular-data-binding-and-digest.ht.. 🎜
いいねを押す +0
習慣沉默

リーリー

試してみる
http://plnkr.co/edit/6tNYE0boiI6CXdKtckpa?p=preview

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