Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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.js_Vuejs2 - Fatal编程技术网

Vue.js 嵌套循环中的计算属性

Vue.js 嵌套循环中的计算属性,vue.js,vuejs2,Vue.js,Vuejs2,我想知道是否可以基于当前项访问嵌套循环中的computed属性。现在,我通过创建一个方法来获得一个特定的属性来实现它。没有这种额外的方法,有没有办法做到这一点 编辑我更新了我的示例,使其更加清晰 const vm=new Vue({ el:“#应用程序”, 数据:{ 类别:[ {id:0,文本:'zero'}, {id:1,文本:'one'}, {id:2,文本:'two'}, ], 仆从:[ {name:'A',category:'zero'}, {name:'B',category:'ze

我想知道是否可以基于当前项访问嵌套循环中的computed属性。现在,我通过创建一个方法来获得一个特定的属性来实现它。没有这种额外的方法,有没有办法做到这一点

编辑我更新了我的示例,使其更加清晰

const vm=new Vue({
el:“#应用程序”,
数据:{
类别:[
{id:0,文本:'zero'},
{id:1,文本:'one'},
{id:2,文本:'two'},
],
仆从:[
{name:'A',category:'zero'},
{name:'B',category:'zero'},
{name:'C',category:'one'},
{名称:'D',类别:'two'},
],
},
方法:{
getComputedData:函数(名称){
返回此[名称];
},
},
计算:{
零:函数(){
返回这个.minions.filter(({category}=>category==='zero');
},
一是功能(){
返回这个.minions.filter(({category}=>category===='one');
},
二是功能(){
返回这个.minions.filter(({category}=>category===='two');
}
},
});

{{category.text}}
  • {{minion.name}

您可以将viewmodel称为
$root
,因此您为类别命名的计算是
$root[category.text]
。请参阅下面的代码片段

如果您在一个组件中,就不会有特殊的
$root
变量,必须求助于
eval(category.text)

无论哪种情况,这里都有一种代码味道,因为您正在基于数据创建命名对象(并且您的计算大多是重复的代码)。最好创建一个包含所有类别的计算或函数

const vm=new Vue({
el:“#应用程序”,
数据:{
类别:[
{id:0,文本:'zero'},
{id:1,文本:'one'},
{id:2,文本:'two'},
],
仆从:[
{name:'A',category:'zero'},
{name:'B',category:'zero'},
{name:'C',category:'one'},
{名称:'D',类别:'two'},
],
},
计算:{
零:函数(){
返回这个.minions.filter(({category}=>category==='zero');
},
一是功能(){
返回这个.minions.filter(({category}=>category===='one');
},
二是功能(){
返回这个.minions.filter(({category}=>category===='two');
}
},
});

{{category.text}}
  • {{minion.name}

在您的例子中,似乎没有必要使用
computed
,除非您有一个特定的用例?Hi@kevguy这里有一个代码片段,只是为了说明我所说的在嵌套循环中访问computed属性的意思。正如您所建议的,这里根本不需要计算属性。我想知道如果需要的话是否有可能。@kevguy我更新了我的示例,以便更具体一些即使有更新的特定用例,
computed
仍然是不必要的,只需将
computed
中的内容放入
getComputedData
方法,就完成了。因此,也许“嵌套循环中的计算属性”并不是必须的,因为总是可以想到一个更干净的解决方案??如果我错了,请纠正我:计算属性是缓存的(),如果我只是将
computed
中的内容移动到
getComputedData
中,它将不会以同样的方式运行(除非我自己进行缓存)。这个问题的目的不是如何更好地解决它,而是在这种情况下,如果不创建额外的方法,是否有可能访问计算属性。谢谢@Roy J。我完全同意你关于代码气味的观点。我只是想看看这样的事情是否可能:)