【发布时间】:2020-10-03 17:11:09
【问题描述】:
我正在编写一个应用程序,它使用下拉菜单来映射 CSV 文件中的输入字段。我想实现这样的逻辑:“如果标题行读取'名字'或'名字',然后选择此选项。”此代码失败,“属性内的插值已被删除。请改用 v-bind 或冒号简写。”
<option value="first name" selected="{{ (field == 'First Name' || field == 'Given Name') ? true : false }}">First name</option>
我不使用 :value="field" 或 v-model="field" 的原因有两个。首先,我有几个我想匹配的同义词,例如。 "Date of Birth, DOB, Birth date" 其次,许多标题行与任何字段都不匹配,在这种情况下,我想恢复为一个包罗万象的选项“未映射”
我试过了:
<option value="first name" :selected="true : field == 'First Name' || field == 'Given Name'">First Name</option>
但无论如何,这似乎总是选择选项。即使字段 == "出生日期"
有什么建议吗?
编辑:
到目前为止,我最好的解决方法是创建一个函数来计算选项值:
<select class="form-select" name="f{index}" :value="mapFieldName(field)">
mapFieldName: function (colName) {
// Default return value
var fieldName = "not mapped";
// Convert to lowercase for case-insensitive matching
colName = colName.toLowerCase();
// Match first name field
if (colName == "first name" || colName == "given name" || colName == "first" || colName == "fn")
fieldName = "first name";
// Return computed option value
return fieldName;
}
除非提出更优雅的解决方案,否则我会采用这个。
【问题讨论】:
-
好吧,现场模型没有正确获取您的
value(名字)而不是名字。<option>包裹的文字不代表价值。
标签: javascript vue.js