問題タブ [angularjs-track-by]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - $indexによるng-repeatトラックがページネーションで機能しない
私は ng-repeat + Filter + Pagination(ui-bootstrap) で作業しています
1- ng-repeat + フィルターは正常に動作しています:
2- ng-repeat + filter + pagination も正常に機能しています:
3-問題は、ng-repeat + Filter + Pagination + track by $index を組み合わせたときです
各ページで 0 から 4 までのインデックス値の再起動を取得します
「$indexで追跡」の正しい順序についてのアイデア!どこに置けばいいですか?
angularjs - AngularJS ngOptions track by はオブジェクト全体を ngModel に設定しません
ここに私のjsonオブジェクト:
私は次のように選択します:
オプションが選択されると、前の選択を繰り返す別の選択が必要になりngModel
ます。次は次のようになります。
$scope.dashboard.type.name = 'qwe'
オプションを手動で選択すると正常に動作しますが、それらがスクリプトのdashboard.type(例:)の値である場合、オブジェクト全体を保存track by
するのではなく、オプションを選択してに保存するために使用します。使用した値を保存するだけですオプションdashboard.type
で。track by
dashboard.type の値:
- オプションを手動で選択すると:
{"name":"qwe","field":["a","b","c","d","f"],"id":3}
- トラックバイ使用時:
{"name":"qwe"}
注:は使用できませんtrack by item
。オブジェクトのプロパティである必要がありますitem
。またはのいずれname
かid
です。
ここにplnkrがあります。
編集 :
多くの人が指摘したように、オブジェクトをtodos
リストの値に初期化できないことを明確にしたいと思います。これは、dashboard.type.name
値が毎回todos
異なり、リストが数十から数百のオブジェクトに変化するためです。todos
ここで、リストのチェックを繰り返しtodos[index].name==someName
、関連するオブジェクトを割り当てる必要があります。私は積極的にこのソリューションを回避しようとしています (より良い方法が必要なので)。
注:ng-change
実際のオブジェクトを使用して割り当てよ うとしましdashboard.type.name
たが、オプションが手動で選択された場合にのみ機能し、すでに正常に機能しているようです。使用時にオブジェクトを割り当てませんtrack by
。
重要: $scope.dashboard.type.name = 'qwe'
は単なる例です。の値は$scope.dashboard.type.name
、ページが読み込まれるたびに変わる可能性があります。
PS: また、これについては以前に言及しておくべきでした。申し訳ありません。
javascript - AngularJSの「トラックバイ」とは何ですか?どのように機能しますか?
どのように機能し、何をするのかよくわかりませんtrack by
。
私の主な目標は、それを使用してng-repeat
精度を高めることです。
javascript - $index によるトラックが使用されている場合、ng-init が 2 回目に呼び出されない
html:
コントローラ:
ng-init
tr が初期化されたときに関数が初めて呼び出されました。変更ボタンをクリックすると、行コレクションが変更され、ng-init
再度呼び出されることはありません。$index
ng-init
両方の時間を呼び出してトラックを削除した場合。track by を使用する$index
と、一度だけ呼び出されました。なぜそうなのですか?これについてのアイデア。
angular - ngFor trackBy まだ DOM を再レンダリングしていますか?
ngFor で trackBy を有効にし、それが呼び出されて機能していることを確認しましたが、ブラウザーで DOM が再レンダリングされ、行がちらつくことにまだ気付きます。ここで何が起きてるの?Angular1 では、ブラウザー/Chrome デバッガーで、item.id によるトラックを使用しているときに DOM が更新/置換されず、ちらつきが発生しないことを確認できます。私のコードに何らかのエラーがありますか、それとも実際に何か良いことをしていることに気付いていないフードの下で何かが起こりますか?
編集 私はこれを引き起こしている私のAPIサービスで観測可能であるようにエラーを追跡しましたが、それでも理由はわかりません.
解決
新しいデータをリロードするたびに新しいものに置き換えるのではなく、同じ観察可能な this.items を使用することで解決しました。
angularjs - Angular v1.4は、すでにレンダリングされたアイテムを再レンダリングせずにdivを繰り返します
画像配列を繰り返し、さらに読み込みボタンを ajax 要求に使用して、その配列に応答画像をプッシュするコードを作成しました。しかし、新しい応答が来るたびに、イメージ全体が再シャッフルされます。
そして私のコントローラーコードでは:
サーバーが3つの画像を送信するたびに。以前は、私が追加したこのSOアンサーからtrack by $index
使用しませんでしたが、運がありませんでした。track by $index
angular は配列全体を再レンダリングしていると思います。もしそうなら、どうすればこの再レンダリングを止めることができますか?