我的组件包含这样的代码:
export default {
name: 'signup',
data () {
var myValidator = (rule, value, callback) => {
// cut some code, but here the access to component property
t = this.response
};
return {
signupDTO: {
email: '',
password: '',
},
response: {},
rules: {
password: [
{validator: myValidator},
],
},
}
},
methods: {
我想分享myValidator
和response
,以便在许多组件中不重复该代码。但是,可能由于缺乏Javascript知识,我不知道如何做到这一点。所以任何建议都会有所建议。
答案 0 :(得分:1)
Vue.js非常灵活。有多种选择。分享数据:
$root
属性在each component内访问此组件。您可以使用它来共享数据。 (不推荐)$on
和$emit
方法。您可以使用它来共享数据。 (适用于较小的应用程序和概念证明)就共享功能而言。您可以使用:
extends
property。但要注意,继承比解决方案带来更多问题。对于功能,尝试尽可能多地依赖ES模块进行共享。如果需要访问函数内的Vue组件实例属性,请考虑将它们作为参数传递给函数。
简而言之:
- 用于共享数据:使用Vuex等状态管理
- 对于共享功能:使用ES模块或Mixins
醇>
答案 1 :(得分:0)
您可以创建全局functional composition?并在全球范围内存储response
。正如@dr_barto建议的那样,您还可以使用mixins在组件之间分发myValidator
。