将布尔值传递给 v-for 循环
Passing boolean value to v-for loop
如何将 v-for 循环中的 access/convert element.varName
字符串作为变量名传递以获取此布尔值的当前值。
在以下情况下:
<div v-for="(element, index) in elements" :key="index" :class="{included : element.varName, 'cur-el':selected==element.shortName}">
<div v-html="element.icon"></div>
{{element.name}}
</div>
el1: false,
el2: false,
selected: undefined,
elements: [
{
name: 'element 1',
icon: `<svg>
<path></path>
<rect></rect>
</svg>`,
shortName: 'el1',
varName: this.el1
},
/...
]
我的 included
class 怎么可能是一个布尔值而不是实际的字符串,最初我尝试使用 shortName
访问它如下:
element.shortName
这没有用,也试过:
[element.shortName]
也:
this[element.shortName]
None 其中似乎有效,所以我尝试通过将它添加到对象 varName: this.el1
中来包括对该变量的实际引用,但也没有用。
我做错了什么?
varName: this.el1
未在 data
选项中更新的原因是因为它不是反应式的。
您可以在 Vue 官方文档中阅读相关内容 here。
回到你的问题:
尝试在 mounted()
生命周期挂钩中分配整个 elements
数组。因此,您可以访问 this.el1
.
演示:
new Vue({
el:"#app",
data: {
el1: false,
el2: true,
elements: []
},
mounted() {
this.elements = [
{
name: 'element 1',
shortName: 'el1',
varName: this.el1
}, {
name: 'element 2',
shortName: 'el2',
varName: this.el2
}
]
}
});
.included {
background-color: yellow
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div v-for="(element, index) in elements" :key="index" :class="{included : element.varName}">
{{element.name}}
</div>
</div>
由于您在其他数据中引用数据 属性,因此您应该将第二个 属性 定义为计算 属性 :
data(){
return {
el1: false,
el2: false,
selected: undefined,
}
},
computed:{
elements(){
return [
{
name: 'element 1',
icon: `<svg>
<path></path>
<rect></rect>
</svg>`,
shortName: 'el1',
varName: this.el1
}
]
}
}
如何将 v-for 循环中的 access/convert element.varName
字符串作为变量名传递以获取此布尔值的当前值。
在以下情况下:
<div v-for="(element, index) in elements" :key="index" :class="{included : element.varName, 'cur-el':selected==element.shortName}">
<div v-html="element.icon"></div>
{{element.name}}
</div>
el1: false,
el2: false,
selected: undefined,
elements: [
{
name: 'element 1',
icon: `<svg>
<path></path>
<rect></rect>
</svg>`,
shortName: 'el1',
varName: this.el1
},
/...
]
我的 included
class 怎么可能是一个布尔值而不是实际的字符串,最初我尝试使用 shortName
访问它如下:
element.shortName
这没有用,也试过:
[element.shortName]
也:
this[element.shortName]
None 其中似乎有效,所以我尝试通过将它添加到对象 varName: this.el1
中来包括对该变量的实际引用,但也没有用。
我做错了什么?
varName: this.el1
未在 data
选项中更新的原因是因为它不是反应式的。
您可以在 Vue 官方文档中阅读相关内容 here。
回到你的问题:
尝试在 mounted()
生命周期挂钩中分配整个 elements
数组。因此,您可以访问 this.el1
.
演示:
new Vue({
el:"#app",
data: {
el1: false,
el2: true,
elements: []
},
mounted() {
this.elements = [
{
name: 'element 1',
shortName: 'el1',
varName: this.el1
}, {
name: 'element 2',
shortName: 'el2',
varName: this.el2
}
]
}
});
.included {
background-color: yellow
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div v-for="(element, index) in elements" :key="index" :class="{included : element.varName}">
{{element.name}}
</div>
</div>
由于您在其他数据中引用数据 属性,因此您应该将第二个 属性 定义为计算 属性 :
data(){
return {
el1: false,
el2: false,
selected: undefined,
}
},
computed:{
elements(){
return [
{
name: 'element 1',
icon: `<svg>
<path></path>
<rect></rect>
</svg>`,
shortName: 'el1',
varName: this.el1
}
]
}
}