リストで計算プロパティを使用するにはどうすればよいですか。 VueJS v2.0.2を使用しています。
HTMLは次のとおりです。
<div id="el">
<p v-for="item in items">
<span>{{fullName}}</span>
</p>
</div>
Vueコードは次のとおりです。
var items = [
{ id:1, firstname:'John', lastname: 'Doe' },
{ id:2, firstname:'Martin', lastname: 'Bust' }
];
var vm = new Vue({
el: '#el',
data: { items: items },
computed: {
fullName: function(item) {
return item.firstname + ' ' + item.lastname;
},
},
});
反復ごとに計算プロパティを作成することはできません。理想的には、これらのitems
のそれぞれがownコンポーネントになるため、それぞれが独自のfullName
計算プロパティを持つことができます。
user
コンポーネントを作成したくない場合にできることは、代わりにメソッドを使用することです。 fullName
をcomputed
プロパティからmethods
に移動すると、次のように使用できます。
{{ fullName(user) }}
また、引数をcomputed
に渡す必要がある場合は、代わりにメソッドが必要になる可能性があります。
ここで不足しているのは、items
はすべてのアイテムを保持する配列ですが、computed
は単一のfullName
であり、すべてのfullName
s in items
。これを試して:
var vm = new Vue({
el: '#el',
data: { items: items },
computed: {
// corrections start
fullNames: function() {
return this.items.map(function(item) {
return item.firstname + ' ' + item.lastname;
});
}
// corrections end
}
});
次に、ビューで:
<div id="el">
<p v-for="(item, index) in items">
<span>{{fullNames[index]}}</span>
</p>
</div>
ビルが紹介する方法は確かに機能しますが、計算された小道具を使用してcanできます。特に、反復でmethod
よりも優れた設計だと思いますアプリが大きくなったとき。また、computed
は、特定の状況でmethod
と比較してパフォーマンスが向上します。 http://vuejs.org/guide/computed.html#Computed-Caching-vs-Methods