- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个呈现个人详细信息组件的父组件,并且正在注入(inject)父组件的验证器范围。如果我使用 v-validate
指令和 this.$validator.validateAll()
或 this.$validator.validate('field_name')
这很好用。
但是,我需要独立验证一些字段,但是当使用 this.$validator.attach('first_name', 'required')
时,例如我收到以下警告 [ vee-validate] 字段缺少“名称”或“data-vv-name”属性
。我已经尝试将调用移动到点击处理程序中以附加验证器,以防输入元素在从 mounted()
调用时未完全呈现但仍然遇到相同的问题。我还分别尝试了 name
或 data-vv-name
属性。
父类.ts
import { Vue, Component } from 'vue-property-decorator';
import PersonalDetailsComponent from './PersonalDetails';
@Component({
template: `
<div class="container">
<personal-details-component></personal-details-component>
<div class="row">
<Button :onClick="handleButtonClick" :buttonText="'Validate'"></Button>
</div>
</div>
`,
components: {
PersonalDetailsComponent,
},
$_veeValidate: {validator: 'new'}
})
export default class ClaimComponent extends Vue {
mounted() {
this.attachValidators();
}
handleButtonClick() {
this.$validator.validateAll();
}
attachValidators() {
console.log(document.getElementsByName('first_name')); // Finds the element
this.$validator.attach('first_name', 'required');
this.$validator.attach('surname', 'required');
this.$validator.attach('email', 'required');
}
}
PersonalDetails.ts
import {Vue, Component, Inject} from 'vue-property-decorator';
import {Validator} from 'vee-validate';
@Component({
template: `
<div class="row">
<div class="col-12">
<form class="material-form">
<div class="group w-third">
<input v-model="first_name" type="text" name="first_name" required>
<span class="highlight"></span>
<span class="bar"></span>
<label>First name</label>
<span class="form-text error-text">{{ errors.first('first_name') }}</span>
</div>
<div class="group w-third">
<input v-model="surname" type="text" name="surname" required>
<span class="highlight"></span>
<span class="bar"></span>
<label>Surname</label>
<span class="form-text error-text">{{ errors.first('surname') }}</span>
</div>
<div class="group w-third">
<input v-model="email" type="text" name="email" required>
<span class="highlight"></span>
<span class="bar"></span>
<label>Email address</label>
<span class="form-text error-text">{{ errors.first('email') }}</span>
</div>
</form>
</div>
</div>
`
})
export default class PersonalDetailsComponent extends Vue {
@Inject('$validator') public $validator!: Validator;
first_name: string = '';
surname: string = '';
email: string = '';
}
最佳答案
我想你可能想错了。理想情况下,验证逻辑应该在子组件中,而不是在父组件中。但是您应该仍然能够使用父级来运行验证。当您从父级注入(inject)验证器实例时,您应该能够将子组件更新为以下内容:
export default class PersonalDetailsComponent extends Vue {
@Inject('$validator') public $validator!: Validator;
first_name: string = '';
surname: string = '';
email: string = '';
public mounted() {
this.$validator.attach('first_name', 'required');
this.$validator.attach('surname', 'required');
this.$validator.attach('email', 'required');
}
}
然后您可以从父级中删除 attachValidators
方法。这应该将这些验证规则附加到父级提供的验证器实例。所以理论上父组件可以运行 this.$validator.validateAll();
并且它应该根据子组件内的规则进行验证。
关于typescript - VeeValidate 附加方法 : A field is missing a "name" or "data-vv-name" attribute when fields do have name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52968276/
如何避免以下类型的错误,并强制要发生的操作吗?: /bin/cp: cannot overwrite directory `./foo' with non-directory /bin/cp:
打电话时git branch -vv显示本地到远程分支的映射,远程分支是蓝色的(在命令行上工作时很难阅读)。如何将远程分支的颜色更改为例如黄色? 我还找到了 this Stack Overflow q
我喜欢 "git branch -vv"的 -vv 格式,但想在格式中添加 "%(committerdate:relative)"和 --sort=-committerdate 我一直在努力从代码(
我客户的一个 ftp 服务器最近从 Linux 迁移到了 Windows。 使用 *.[cC][sS][vV] 搜索在 Linux 上查找 *.csv 和 *.CSV 文件。 但这在 Windows
我想像 OpenSSH 那样处理冗长级别选项:通过多次传递 -v 选项。 Getopt::Std 不会递增无参数选项值,而只是将它们设置为 1。这意味着使用 Getopt::Std 传递 -vvv 将
在我的 .gitconfig 中使用以下配置,我可以看到我的本地和远程分支的颜色不同。 [color "branch"] current = bold cyan local = nor
我正在尝试更改应用内购买日期的格式,但在真实设备中返回 nil,但在模拟器中效果很好。 let DateString = "2016-01-21 00:29:09 Etc/GMT" let dateF
在发布这个问题之前,我搜索了可能的答案,但找不到我需要的答案。 就是说:我有一个包含多个 div 的演示页面,每个 div 可以有不同的高度。我坚持了几个小时的方法是执行以下操作: 当 div 的底部
我有一个呈现个人详细信息组件的父组件,并且正在注入(inject)父组件的验证器范围。如果我使用 v-validate 指令和 this.$validator.validateAll() 或 this
首先,我是这个网站的新手(但我很长时间以来一直在阅读和收集信息 :D)如果我在构建问题时犯了一些错误,我很抱歉……而且大多数重要的是,我是编程新手(好吧,不是新手,但我是 6 个月前开始的)..无论如
我正在尝试使用EmguCV检测字符标记,并且已经从OpenCV网站复制并重写了example。 我的代码如下所示: Mat cameraMatrix = new Mat(new Size(3, 3),
我是一名优秀的程序员,十分优秀!