新しいオブジェクトがVue.jsコンポーネント内のオブジェクトの配列に追加されると、レンダリングされたリストは更新されますが、oderByフィルタは適用されません新しい項目が追加されました。たとえば、各オブジェクトが奇形name
とorderBy
のフィルタを持つオブジェクトの配列は、name
に適用されます。新しいオブジェクトを配列にプッシュすると、このオブジェクトはレンダリングされたリストの最後の項目として表示されます。 unshift
を使用すると、オブジェクトがリストの最初の項目として表示されます。Vue.js list orderByフィルタは動的に追加された項目を配列に並べ替えません
すべての項目にorderBy
フィルタを適用して、Vue.jsがリストを再レンダリングできる配列に項目を正しく追加するにはどうすればよいですか?
Vue.set
/$set
で試してみましたが、この作業を行うことはできませんでした。 何か助けていただければ幸いです。
HTML:
<div v-for="object in array | orderBy 'name'">
{{ object.name }}
</div>
JS:
data: function() {
return {
array: [
{
name: 'Jon'
},
{
name: 'Alex'
}
]
},
},
methods: {
addItemToArray() {
let item = { name: 'Paul' }
this.array.push(item)
}
}
Vue 2.xでは、この動作は推奨されなくなりました。フィルタリングされた配列を格納するために 'computed property'を使用し、この計算されたプロパティをループする必要があります。 'フィルタ 'は、データのレンダリング方法を変更するものであり、データそのものを変更するものではありません。さらに、補間で '|'の後に使用されるフィルタは、Vueインスタンス内の 'filters'オブジェクトの下で宣言されます。 – wostex
@wostexありがとう。 – crabbly