在 v-model 中使用条件运算符?
Using conditional operators in v-model?
我有一个 vue 组件,它显示一个表单,其中填充了要编辑的选定项目中的项目。现在我不想使用第二种形式来创建新项目。目前,我使用 v-model 自动填充和更新项目,这显然会更新对象。我不能像这样使用条件运算符吗?
<form @submit.prevent>
<div class="field">
<label class="label">Job Title</label>
<p class="control">
<input type="text" class="input" placeholder="Job title" v-model="experiences[editIndex].title ? experiences[editIndex].title : ''" />
</p>
</div>
</form>
您可以将条件运算符与 v-model
一起使用,但您不能像您在示例中尝试的那样给 v-model
一个字符串。
我不会使用相同的表格进行编辑和创建(可能是偏好)。我会让表单成为它自己的组件,然后制作两个额外的表单组件用于编辑和创建。
但是,如果您真的想处理每个输入的 v-model
指令中的逻辑,则需要在三元运算符的最后部分为其指定一个变量。像这样:
v-model="experiences[i].title ? experiences[i].title : newExperience.title"
如果你使用 eslint-plugin-vue 它会抱怨 v-model 中的三元。
ESLint: 'v-model' directives require the attribute value which is
valid as LHS. (vue/valid-v-model)
所以我宁愿明确地使用一对 :value
和 @input
道具。
像那样:
<input
type="text"
class="input"
placeholder="Job title"
:value="experiences[editIndex].title ? experiences[editIndex].title : ''"
@input="experiences[editIndex].title = $event.target.value"
/>
此外,您可以为@input 使用一些函数,它将检查 属性 是否存在并在必要时添加它。
我有一个 vue 组件,它显示一个表单,其中填充了要编辑的选定项目中的项目。现在我不想使用第二种形式来创建新项目。目前,我使用 v-model 自动填充和更新项目,这显然会更新对象。我不能像这样使用条件运算符吗?
<form @submit.prevent>
<div class="field">
<label class="label">Job Title</label>
<p class="control">
<input type="text" class="input" placeholder="Job title" v-model="experiences[editIndex].title ? experiences[editIndex].title : ''" />
</p>
</div>
</form>
您可以将条件运算符与 v-model
一起使用,但您不能像您在示例中尝试的那样给 v-model
一个字符串。
我不会使用相同的表格进行编辑和创建(可能是偏好)。我会让表单成为它自己的组件,然后制作两个额外的表单组件用于编辑和创建。
但是,如果您真的想处理每个输入的 v-model
指令中的逻辑,则需要在三元运算符的最后部分为其指定一个变量。像这样:
v-model="experiences[i].title ? experiences[i].title : newExperience.title"
如果你使用 eslint-plugin-vue 它会抱怨 v-model 中的三元。
ESLint: 'v-model' directives require the attribute value which is valid as LHS. (vue/valid-v-model)
所以我宁愿明确地使用一对 :value
和 @input
道具。
像那样:
<input
type="text"
class="input"
placeholder="Job title"
:value="experiences[editIndex].title ? experiences[editIndex].title : ''"
@input="experiences[editIndex].title = $event.target.value"
/>
此外,您可以为@input 使用一些函数,它将检查 属性 是否存在并在必要时添加它。