【问题标题】:How to reset data objects after button click单击按钮后如何重置数据对象
【发布时间】:2019-06-28 20:17:06
【问题描述】:

我正在创建一个在点击时加载更多内容的按钮。目前,单击时,它将文本从“加载更多”更改为“正在加载”并禁用按钮。但是,现在按钮仍然显示“正在加载”并且仍然处于禁用状态,所以我无法再次单击它。

我的组件的“数据”中有按钮的内部文本,但这可能不是最好的方法。

这里是 HTML:

      <Button
        v-if="allowLoadMore && morePagesAvailable"
        :loading="loading"
        :disabled="clicked"
        @click="loadMore"
      >
        {{ loadMoreText }}
      </Button>

这是数据:

  data () {
    return {
      page: 1,
      morePagesAvailable: false,
      loadMoreText: 'Load More',
      clicked: false
    }

方法如下:

  methods: {
    loadMore () {
      if (this.morePagesAvailable) {
        this.page += 1
        ...
        this.loadMoreText = 'Loading'
        this.clicked = true
        return this.loadMoreText
      }
    }
  }

我想禁用按钮并仅在实际加载时显示“正在加载”,以便我可以单击直到没有更多可用页面。

【问题讨论】:

  • 您需要在新页面加载后进行挂钩,但您没有包含任何代码,因此很难给出具体示例。
  • 你需要什么代码?

标签: javascript jquery vue.js reset


【解决方案1】:

假设你使用 axios 之类的东西,你应该创建这样的东西

loadMore () {
      if (this.morePagesAvailable) {
        this.page += 1
        ...
        this.loadMoreText = 'Loading'
        this.clicked = true
        Axios.get(...).then( resp => {
              //use the resp
              this.clicked = false
       }) 
        return this.loadMoreText
      }
    }

此外,您可能应该将 clicked 重命名为 isLoading。

【讨论】:

  • 我没有使用 Axios。没有 Axios 怎么办?
  • 无论您如何加载数据都可以。
猜你喜欢
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
相关资源
最近更新 更多