残念ながら、これは特定のイベントでのみ可能です。 this question hereにあります。代わりに考慮する可能性のあるものはcomputed property
で、これらの値をすべて計算して配列を返します。この結果の配列はVueによってキャッシュされ、配列items
が変更され(Vueが変更を検出するように変更されるまで)、再評価されません。
例:
Vueのセットアップ
<script>
new Vue({
el: '. . .',
data: {
a: {b: {c: {items: [. . .]}}}
},
methods: {
foo: function(val) {
. . .
}
},
computed: {
itemsAfterFoo: function() {
var this_vue_instance = this;
var computed_items = [];
this_vue_instance.items.forEach(function(item) {
computed_items.push(this_vue_instance.foo(item.value));
});
return computed_items;
}
}
});
</script>
テンプレート
<div v-for="(i, index) in a.b.c.items">
<div :id="itemsAfterFoo[index]"></div>
</div>
か、その効果に何か。ここで計算された特性に
詳細情報:https://vuejs.org/v2/guide/computed.html
理由だけではなく、 'V-for'と同じ要素には' V-once'を追加しませんか? https://jsfiddle.net/kr2gpq9L/ – thanksd
上記のコメントは、静的コンテンツ(配列がいつでも変更される予定はない)に対しては完全に有効ですが、あなたの 'v-for'ループではレンダリングされません。あなたのデータが決して変更されないならば、この 'v-once'の提案を考慮してください、そうでなければあなたはそれを使うのを避けるでしょう。 –
私は何が尋ねられているのか分かりません。 'foo'メソッドを各項目に対して1回だけ起動させますか?あるいは、 'a.b.c.itit '配列が更新されたときに' foo'メソッドを起動させたいのですが、 'a'プロパティの何かが変更されたときは起動しませんか? – thanksd