如何将路由器 link 放入 Quasar 输入验证文本中?
How do I put a router link inside the Quasar Input validation text?
我正在使用 internal Quasar validation (:rules
) 来验证输入表单。
它是一组规则,||
的一侧是布尔函数,另一侧是错误验证文本。这是我在上面 link 编辑的文档中的示例:
<q-input
ref="inputRef"
filled
v-model="model"
label="Email"
:rules="[val => !!val || 'Email is required']"
/>
现在我想在验证文本中包含一个路由器 link,但我不知道该怎么做。
例如:
<q-input
ref="inputRef"
filled
v-model="model"
label="Email"
:rules="[!(await isEmailSignedUp(val)) ||
'This email already exists. Please <router-link to='{ name: 'login' }'>login</router-link> or use a different email.',]"
/>
我将如何完成上述工作?
目前它只是将该模板代码打印为字符串。
Vue 不是基于字符串的模板引擎。当然这是行不通的。在这种情况下(需要将组件呈现为另一个组件的一部分(或替换一部分),总是寻找现有的插槽
在这种情况下 q-input
有一个 error
插槽 - docs。不幸的是,它不是一个作用域插槽(因此它不提供当前的错误消息),所以如果你有更多的规则(以及可能要显示的错误消息),你将需要更多的内部逻辑(可能使用 v-if
和模板参考)
请注意,为了使用此插槽,bottom-slots
道具必须出现在 q-input
<q-input
ref="inputRef"
filled
v-model="model"
label="Email"
:rules="[!(await isEmailSignedUp(val)) || 'login']"
bottom-slots // <-- IMPORTANT!
>
<template v-slot:error>
<div>This email already exists. Please <router-link to='{ name: 'login' }'>login</router-link> or use a different email.</div>
</template>
</q-input>
我正在使用 internal Quasar validation (:rules
) 来验证输入表单。
它是一组规则,||
的一侧是布尔函数,另一侧是错误验证文本。这是我在上面 link 编辑的文档中的示例:
<q-input
ref="inputRef"
filled
v-model="model"
label="Email"
:rules="[val => !!val || 'Email is required']"
/>
现在我想在验证文本中包含一个路由器 link,但我不知道该怎么做。
例如:
<q-input
ref="inputRef"
filled
v-model="model"
label="Email"
:rules="[!(await isEmailSignedUp(val)) ||
'This email already exists. Please <router-link to='{ name: 'login' }'>login</router-link> or use a different email.',]"
/>
我将如何完成上述工作?
目前它只是将该模板代码打印为字符串。
Vue 不是基于字符串的模板引擎。当然这是行不通的。在这种情况下(需要将组件呈现为另一个组件的一部分(或替换一部分),总是寻找现有的插槽
在这种情况下 q-input
有一个 error
插槽 - docs。不幸的是,它不是一个作用域插槽(因此它不提供当前的错误消息),所以如果你有更多的规则(以及可能要显示的错误消息),你将需要更多的内部逻辑(可能使用 v-if
和模板参考)
请注意,为了使用此插槽,bottom-slots
道具必须出现在 q-input
<q-input
ref="inputRef"
filled
v-model="model"
label="Email"
:rules="[!(await isEmailSignedUp(val)) || 'login']"
bottom-slots // <-- IMPORTANT!
>
<template v-slot:error>
<div>This email already exists. Please <router-link to='{ name: 'login' }'>login</router-link> or use a different email.</div>
</template>
</q-input>