【发布时间】:2020-03-13 23:56:51
【问题描述】:
我会使用带有函数的 v-bind 将按钮绑定到输入:
我的模板中的代码:
<template>
<input
type="email"
v-model="email"
v-bind:placeholder="$t('fields.email_place_holder')"
/>
<input
v-bind:disabled="{ isDisable }"
type="submit"
v-bind:value="$t('buttons.notify_me')"
class="notify-me-button"
/>
</template>
我的脚本中的代码:
methods: {
isDisable() {
return email.lenght > 0;
}
}
但是button并没有改变它的状态,我尝试用同样的方法改变css样式,结果是一样的。问题是按钮第一次响应一次isDisable() 返回的值。
【问题讨论】:
-
尝试将
isDisable转换为计算属性,或将isDisable替换为您正在检查的条件。即<input :disabled="email.length > 0" type="submit" v-bind:value="$t('buttons.notify_me')" class="notify-me-button" /> -
指令只需要值而不是语句和条件。
-
另外,当我使用
console.log()进行测试时,我发现该方法执行一次,而不是每次我在字段中输入。 -
如果您选择仅使用值而不是语句或表达式来遵循指令,则使用计算属性
computed: { emailLength: function () { return this.email.lenght > 0;}}该方法只执行一次的原因是它不是反应式的。这是被动的,会随着email的值的变化而变化。