如何从私有函数访问组件作用域?

时间:2019-07-04 07:32:23

标签: javascript vue.js jestjs

我不知道。我看到了一些解决方案,例如将其导出到窗口对象并从那里获取,但是我觉得有一种我不知道的简单方法:

export default {
  data() {
    return{
      uploadScanningDialog: false
    }
  },

  methods: {
    skipScan() {
      hideDialog();
    },
  },
}

function hideDialog() {
  this.uploadScanningDialog = false;
}

这是基本情况。但是当我运行测试时,在我的 hideDialog 函数中未定义。我不想将每个函数移到方法下的公共范围内。有办法吗?

1 个答案:

答案 0 :(得分:2)

方法skipScan this中的假设已按预期定义。因此,您可以像下面这样绑定上下文来调用hideDialog

skipScan() {
  hideDialog.call(this);
},

另请参阅https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/callhttps://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/apply