【问题标题】:In Vue can you call the created() function from a method?在 Vue 中,您可以从方法中调用 created() 函数吗?
【发布时间】:2019-06-06 13:32:45
【问题描述】:

所以我在 vue 中制作了一个应用程序,在页面加载时,它需要一个带有用户 zip 的 cookie 并使用该 zip 执行搜索,但如果它错误,用户也可以更改该 zip,所以我想成为能够在更改 zip 时运行的常规方法中调用创建的方法,这在 Vue 中是否可行?

【问题讨论】:

  • created 是一个生命周期钩子,无法以这种方式调用
  • 那么有没有更好的方法来做到这一点,而无需在我的方法部分复制函数?
  • 创建一个方法在创建的钩子中调用它并在你的新方法中再次调用它

标签: javascript vue.js javascript-framework


【解决方案1】:

已编辑:我认为这是不可能的,但正如@RoyJ 指出的那样,显然,你可以但下面是 替代解决方案,而不是调用 created() 钩子。

您可以做的是在您的 methods 属性下定义另一个函数,您可以在 created 挂钩期间调用该函数,当 zip 发生更改时,您可以调用相同的函数。

这样,您只需在一个地方定义逻辑,并在需要时重用它。

methods: {
  zipCodeRelatedRequest() {
    // core logic here
  },
  handleZipChange() {
    this.zipCodeRelatedRequest()
  }
},
created() {
  this.zipCodeRelatedRequest();
}

【讨论】:

    【解决方案2】:

    可能使用$options。但正如 Ana 指出的那样,您应该定义created 调用的方法。调用 created 会混淆其用途。其他方法的命名方式应明确其用途。

    使用$options 的示例,只是为了展示可能性:

    new Vue({
      el: '#app',
      created() {
        console.log("Created");
      }
    });
    <script src="https://unpkg.com/vue@latest/dist/vue.js"></script>
    <div id="app">
      <button @click="$options.created">Run</button>
    </div>

    【讨论】:

    • 我只是很好奇,不过,您将如何从您的一种方法中调用它。如果您将它作为事件处理程序附加它会起作用,但是当我尝试使用 this.$options.created() 从我的函数中调用它时,它会导致错误提示 created 不是函数。
    • 由于某种原因,this.$options.created 似乎是一个包含函数的数组,您可以使用 this.$options.created[0]() 调用它
    • 这很有趣。我以为它会是一种函数,因为它是这样声明的,从没想过会是这样。谢谢。
    猜你喜欢
    • 2021-12-08
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2019-03-19
    • 2018-01-31
    • 2019-12-11
    • 2011-05-05
    • 1970-01-01
    相关资源
    最近更新 更多