【发布时间】:2018-07-31 18:38:12
【问题描述】:
我想连接在数据中定义的固定目录路径和在v-for 中定义的文件名。当我尝试使用计算属性这样做时,我得到:
“TypeError:_vm.filePath 不是函数”。
data: function(){
return{
imageDir: '../assets/images/tiles/'
}
},
computed:{
filePath: function(fileName){
let path = this.imageDir + fileName
return path
}
}
<image :src="filePath(tile.image)" />
当我将filePath 移至方法时,它可以工作。然而,我的印象是,像这样的简单转换正是计算属性的用途。
【问题讨论】:
-
computeds 类似于数据属性,但它们只是派生的(正如您已经提到的)。因此,它们不能是函数。如果你需要一些需要输入参数的东西,那么你最好使用methods。否则,您可以使用一些闭包魔法来使计算返回function,您可以在v-for中使用它。 -
我刚刚发现这个问题的答案是在 v-for 中使用计算属性是不可能的:stackoverflow.com/questions/40322404/… 谢谢大家的帮助。我可以结束这个问题以支持另一个问题吗?
-
@kslstn 只有在
v-for循环中不使用组件时,这是不可能的。 -
感谢您指出这一点。使用子组件实际上是优雅的解决方案。我很困惑,并且在父组件级别拥有计算属性。
标签: javascript vue.js vuejs2