如何在Vue实例之外使函数具有正确的`this`上下文?

时间:2018-07-26 18:45:18

标签: typescript vue.js

我的Vue组件遇到很多麻烦。

<script lang="ts">
import Vue from 'vue';
import { ElForm } from 'element-ui/types/form';

type Validator = (
  this: typeof PasswordReset,
  rule: any,
  value: any,
  callback: (error?: Error) => void
) => void;

const validatePass1: Validator = function(rule, value, callback) {
  if (value && this.form.passwordConfirm) {
    (this.$refs.form as ElForm).validateField('passwordConfirm', valid => {});
  }
};

const PasswordReset = Vue.extend({
  // ...

validatePass1函数中,this.form和(this.$refs)下划线都表示错误。分别:

“属性'form'在类型'VueConstructor上不存在<{形式:{密码:字符串; passwordConfirm:字符串;};规则:{密码:({requ ...'。“

“类型为'VueConstructor的属性'$ refs'不存在<{形式:{密码:字符串; passwordConfirm:字符串;};规则:{密码:({requ ...'。“

我如何获得此功能以识别附加到组件的refs / props / data?

1 个答案:

答案 0 :(得分:0)

您可以全局实例化vue

window.vm = new Vue ({...});

并在ts文件中的任何位置引用它,例如

window.vm.$refs.form