Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js Vue v-一次当量_Vue.js_Vuejs2 - Fatal编程技术网

Vue.js Vue v-一次当量

Vue.js Vue v-一次当量,vue.js,vuejs2,Vue.js,Vuejs2,有没有办法告诉Vue在用作表达式时只调用一次方法 这是我的密码: 按照现在的方式,foo()。Vue中有什么东西我可以告诉你只评估一次吗 像这样:不幸的是,这仅适用于某些事件,例如在。您可能需要考虑的是计算属性计算所有这些值并返回数组。生成的数组将由Vue缓存,并且在修改项数组(并以Vue将检测到更改的方式进行修改)之前,不会重新计算该数组 例如: Vue设置 <script> new Vue({ el: '. . .', data: {

有没有办法告诉Vue在用作表达式时只调用一次方法

这是我的密码:

按照现在的方式,
foo()。Vue中有什么东西我可以告诉你只评估一次吗


像这样:
不幸的是,这仅适用于某些事件,例如在。您可能需要考虑的是<代码>计算属性计算所有这些值并返回数组。生成的数组将由Vue缓存,并且在修改
数组(并以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>

新Vue({
el:“…”,
数据:{
a:{b:{c:{items:[…]}}}
},
方法:{
foo:函数(val){
. . .
}
},
计算:{
itemsAfterFoo:function(){
var this_vue_instance=this;
var计算项目=[];
此_vue_实例.items.forEach(函数(项){
computed_items.push(this_vue_instance.foo(item.value));
});
返回计算的项目;
}
}
});
模板

<div v-for="(i, index) in a.b.c.items">
    <div :id="itemsAfterFoo[index]"></div>
</div>

或者类似的东西


有关计算属性的更多信息,请参见此处:

为什么不在与
v-for
相同的元素上添加
v-once
?上述注释对静态内容完全有效(即,您的数组在任何时候都不会更改),但会导致更改不会在
v-for
循环中呈现。如果你的数据永远不会被修改,考虑这个代码> V-Time/Cuth>建议,否则你会想避免使用它。我想我不清楚什么是被问到的。是否希望
foo
方法对每个项目仅触发一次?还是希望
foo
方法在
a.b.c.items
数组更新时触发,而不是在
a
属性中的任何其他内容更改时触发?作为一个框架,可组合计算属性似乎是许多Vue想要去的地方。过滤器/管道与Vue中表达式中的方法存在相同的问题,它会在每次模型更新时求值???我必须承认,computed属性是JS中非常聪明的一部分(getter/setters/dependency tracker)。只是我必须以一种相反的方式来解释它。