【发布时间】:2017-11-27 14:36:18
【问题描述】:
我有以下 vue 实例,它有一个有条件地返回一些 html 标记的方法。如您所见,每个条件的标记都是相同的,只是应用了不同的样式。
有没有更优雅的方法来实现同样的目标?我也应该使用方法或计算属性或组件来实现这一点 - 如果我应该使用计算属性,我如何传递值来评估?
有人知道其他方法吗?
<div v-for="item in items">
<div v-if="!_.isEmpty(item.files)">
<ul >
<li v-for="file in item.files">
<span v-html="fileIcon(file.fileExtension)"></span>
</li>
</ul>
</div>
</div>
var vm = new Vue({
el: '#root',
data: {
items: [
{
"id": 126,
"content": "blah...",
"files": [
{
"id": 8,
"filename": "test.doc",
"fileExtension": "doc"
}
]
},
{
"id": 127,
"content": "blah...",
"files": []
}
]
},
methods: {
fileIcon: function (extension) {
var str;
switch (extension)
{
case "jpg":
case "jpeg":
case "png":
case "gif":
str = "<i class='fa fa-file-image-o file-picture'></i>";
break;
case "pdf":
str = "<i class='fa fa-file-pdf-o file-pdf' ></i>";
break;
case "xls":
case "xlsx":
str = "<i class='fa fa-file-excel-o file-excel' ></i>";
break;
case "doc":
case "docx":
str = "<i class='fa fa-file-word-o file-word' ></i>";
break;
default:
str = "<i class='fa fa-file-file-o file-empty' ></i>";
break;
}
return str;
}
}
});
请注意,我对 Vue 非常陌生,因此我们将不胜感激提供一些代码 sn-p 来指导。
【问题讨论】:
标签: javascript vue.js vuejs2