我在想如何在vue.js组件上实现验证 .
最初的想法是组件验证并返回错误代码,例如:“require”,“min”,“max”等 . 另一个组件将根据此错误代码显示全文消息 .
因为错误消息可能不会始终显示在组件的模板中 . 我需要两个独立的组件 .
伪代码是这样的 .
<div>
<mycomponent ref="salary" errcode="ErrorCode"></mycomponent>
</div>
.....
<div>
<errormessage watchcomponent="salary" message="salaryErrorMessages"></errormessage>
</div>
salaryErrorMessages是代码和消息的哈希 . 例如:{“require”:“请输入薪水”,“min”:“最低工资值为10000”}
Vue对组件有ref属性 . 我不知道是否可以使用ref引用属性中的组件 .
我考虑的其他方案:
- 在页面模型中添加错误对象,并传递给using:sync binding . 可以监视同一个对象 . 这需要在模型中声明错误消息 .
如果我考虑要求页面还需要知道在回发之前是否有错误 . 可能需要全局错误对象 .
- 使用事件总线或Vuex . 这似乎是官方解决方案,但我不知道 .
当页面有多个实例时,它们将触发相同的事件 . 所有实例都将监视同一事件 .
2 回答
你的工作倒退了 . Vue是关于将数据从父级传递给子级,而不是将子属性公开给父组件 .
sync
已从Vue v2中消失,但这个想法基本上是正确的:父组件包含一个对象,子组件作为道具传递它的块,父对象在子组件中更改时自动在父组件中更新 . 它不必是根组件 .如果您的应用程序需要管理许多与状态相关的恶作剧,那么Vuex几乎总是正确的解决方案 .
Vue会频繁地污染你的控制台,警告是data must be a function . 这就是为什么!
这是一个精简版,真是可耻的黑客,我最近为熟人做了一个熟人:
在我的辩护中,把东西放在
__proto__
是一种非常快速的方法,使它们不可枚举 .你绝对应该使用Vuex . 它不仅可以解决您的问题,还可以为您的项目提供巨大的可扩展性 .