javascript - Vue.js - 在 onload 上访问组件方法

标签 javascript vuejs2

我使用 vue-jsstripe 来实现我的一些付款。

Stripevue-js 结合使用的唯一方法是使用 script.onload。我现在想在 onload 函数中访问一些方法。在此示例中,它是使用 self.myMethod

调用的函数 myMethod

为此,我创建了 self 变量,但它恰好在 onload 范围内未定义。

我该如何才能使其可用?

在当前示例中,self 指的是 Window 对象。

组件.vue

<template></template>

<script>
export default {
     data() {
         const self = this;
         return {}
     },

     methods: {
         myMethod() {}
     },

     mounted() {
         let script = document.createElement('script');
         script.src = "https://js.stripe.com/v3/";
         script.onload = () => {
             const stripe = Stripe('xxxxxxxx');
             const elements = stripe.elements();

             function setOutcome(result) {
                 self.myMethod();
             }
             card.on('change', function(event) {
                 setOutcome(event);
             });
             document.querySelector('form').addEventListener('submit', function(e) {
                 e.preventDefault();
                 const form = document.querySelector('form');
                 stripe.createToken(card).then(setOutcome);
             });
         };
         document.body.appendChild(script);
     }
 }
</script>
<style></style>

最佳答案

您已在 data 方法中定义了一个 self 变量,该变量在该方法之外无法访问。

您需要在 mounted Hook 本身中定义 self 变量:

mounted() {
  let self = this;
  ...
}

关于javascript - Vue.js - 在 onload 上访问组件方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44171311/

相关文章:

javascript - js正则表达式匹配两组定界符,可能出现多次

javascript - 在 Vue 中为简单的 v-if 指令设置动画

javascript - 使用三 Angular 函数通过圆绘制等距平行线

vue.js - 传递给子组件的 Prop 在创建的方法中未定义

javascript - prop 更新时更新 VueJS 组件数据属性

javascript - 使用 npm 编译项目时出错

javascript - Quasar q-input 元素在输入更改时不发出事件(vuejs)

vue.js - 使用 vue.js 重置输入类型文件

vue.js - 如何异步验证 Vuetify 文本字段?

javascript - 关于 Vue 和 Javascript 的简单问题