Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation Vuelidate,我可以通过mixin继承自定义方法吗?_Validation_Vue.js_Vuelidate - Fatal编程技术网

Validation Vuelidate,我可以通过mixin继承自定义方法吗?

Validation Vuelidate,我可以通过mixin继承自定义方法吗?,validation,vue.js,vuelidate,Validation,Vue.js,Vuelidate,在使用Vue CLI构建的项目上使用Veulidate和VueJS 2,我只是尝试使用自定义方法来验证电话号码。该方法来自main.js中的全局mixin main.js Vue.mixin({ methods: { vd_phone(val) { var phonePattern = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/; return phonePattern.test(val) ? t

在使用Vue CLI构建的项目上使用Veulidate和VueJS 2,我只是尝试使用自定义方法来验证电话号码。该方法来自main.js中的全局mixin

main.js

Vue.mixin({
  methods: {
    vd_phone(val) {
      var phonePattern = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
      return phonePattern.test(val) ? true : false
  }
});
var vm = new Vue({
  router, el: '#app', store,
  methods: {
    vd_phone() {
      var phonePattern = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
      return phonePattern.test(val) ? true : false;
    }
  },
  render: h => h(App)
});
export default {
      vd_phone(val) {
         var phonePattern = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
         return phonePattern.test(val) ? true : false;
   }
}
form.vue

validations: {
  phone: {
    required,
    phone: this.vd_phone
  }
}
看起来很简单,对吧?我一遍又一遍地得到
无法读取未定义的
的'vd_phone'属性。尝试了
vd\u电话
此.vd\u电话
此.vd\u电话()
,等等

还尝试将该方法放入全局方法选项(而不是mixin),并尝试通过$root访问它,如下所示:

main.js

Vue.mixin({
  methods: {
    vd_phone(val) {
      var phonePattern = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
      return phonePattern.test(val) ? true : false
  }
});
var vm = new Vue({
  router, el: '#app', store,
  methods: {
    vd_phone() {
      var phonePattern = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
      return phonePattern.test(val) ? true : false;
    }
  },
  render: h => h(App)
});
export default {
      vd_phone(val) {
         var phonePattern = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
         return phonePattern.test(val) ? true : false;
   }
}
同样的问题!在我的form.vue文件中,我尝试使用
this.$root.vd_phone
$root.vd_phone
等访问此方法。。没有骰子

这是我在主题中找到的全部内容:,但这似乎是在谈论继承整个验证器属性,而不仅仅是一个方法


非常感谢您的帮助。

您正在使用工厂模式从源代码实例化函数,以便在其他文件中使用。为此,必须从源文件导出,以便其他文件可以导入,如下所示:

main.js

Vue.mixin({
  methods: {
    vd_phone(val) {
      var phonePattern = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
      return phonePattern.test(val) ? true : false
  }
});
var vm = new Vue({
  router, el: '#app', store,
  methods: {
    vd_phone() {
      var phonePattern = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
      return phonePattern.test(val) ? true : false;
    }
  },
  render: h => h(App)
});
export default {
      vd_phone(val) {
         var phonePattern = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
         return phonePattern.test(val) ? true : false;
   }
}
然后在需要该函数的地方导入该文件,您就可以访问它