だから私は私がレンダリングするためにng-repeatを使用している配列を持っていますが、このリストを逆にしたいと思います。以前、私はこの回答から得たフィルターを使用しました: 逆の角度ng-repeat
しかし、今度は「TypeError:Object#has no method 'slice」at Scope」というエラーが発生します。これが新しいバージョンのAngularJSのせいなのか、何か不足しているのかわかりません。
これは私のフィルターコードです:
.filter('reverse', function () {
return function(items) {
return items.slice().reverse();
};
これは、div内からの私のビューのコードです。
data-ng-repeat='feed in feeds | reverse'
配列を逆にレンダリングし、「id」で順序付けするには、これでうまくいくはずです。
data-ng-repeat="feed in feeds | orderBy:'id':true"
それで問題が解決するかどうかお知らせください。
これは少しトリッキーですが、新しい述語関数を作成したり、配列を変更したりせずに配列を逆にしたいすべての人にとって...
ng-repeat="feed in feeds | orderBy:'':true"
または
ng-repeat="feed in feeds | orderBy:'-'"
[〜#〜]説明[〜#〜]
2番目のパラメーターを空白の文字列のままにすると、Angularは配列(インデックス)のデフォルトの順序でソートされ、最後にtrue
を追加しますAngularのreverse
パラメータを有効にする 'orderBy
次のように、逆のJavaスクリプトスライス関数を直接使用してください。
data-ng-repeat="item in items.slice().reverse()"
単一のフィードの構造は何ですか? angularの組み込みフィルターを使用して、希望どおりに並べ替えることができます。たとえば、フィールド「id」が配列内の「order」を提供するものである場合、これを行う:
data-ng-repeat='feed in feeds | orderBy:id'
これを逆にしたい場合は、次のようにします。
data-ng-repeat='feed in feeds | orderBy:id:reverse'
それは理にかなっていますか?独自のフィルターが必要かどうかわからない。その場合は、デバッグ(つまり、コンソールへの書き込みなど)を試して、実際に何が渡されているかを確認してください。それが配列ではない場合、それはあなたの問題です、そうでなければ代わりにこれを試してください:
return Array.prototype.slice.call(items).reverse();
それらのいずれかがあなたのために働くかどうか教えてください!
これがあなたの問題を解決することを願っています
data-ng-repeat='feed in feeds.reverse()'
配列をソートせず、コピーと反転のみを行うソリューション:ng-repeat="item in items | orderBy : '[]': true"