代码之家  ›  专栏  ›  技术社区  ›  Geoff_S

Vue切换不会恢复,只切换一次和一次

  •  0
  • Geoff_S  · 技术社区  · 7 年前

    我觉得这应该是可行的,而且相当简单,但我一辈子都搞不清楚。我正在制作一个以“暂停”开头的按钮作为文本,然后当按下该按钮时,文本将更改为继续。

    这很好,但它从不切换回恢复??我需要一对一的切换,只需点击将其从一个切换到另一个。

    我在这里做错什么了?

    模板

    <button class="btn btn-primary btn-block" v-on:click="pauseTask" type="button" role="button" id="" aria-expanded="false" style=" color: #6c757d border:none; border-radius: .15;">
        {{ pauseButton.text }}
    </button>
    

    VUE

    data() {
        return {
            pauseButton: {
                text:'Pause'
            },
            isOpen: true
        }
    },
    pauseTask: function() {
          this.isOpen = !this.isOpen;
          this.pauseButton.text = app.isOpen ? 'Pause' : 'Resume';
        },
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Phil    7 年前

    由于使用了未定义的 app 变量。

    我建议您使用计算属性来决定要显示什么文本,这样就不会维护两个单独的数据属性。

    new Vue({
      el: '#app',
      data: () => ({ isOpen: true }),
      computed: {
        pauseButtonText () {
          return this.isOpen ? 'Pause' : 'Resume'
        }
      },
      methods: {
        togglePause () {
          this.isOpen = !this.isOpen
        }
      }
    })
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
    <div id="app">
      <button @click="togglePause" type="button">
          {{ pauseButtonText }}
      </button>
    </div>