【问题标题】:Vue bind multiple v-models to elements in v-for loopVue 将多个 v-model 绑定到 v-for 循环中的元素
【发布时间】:2018-03-07 00:03:30
【问题描述】:

我有一个创建部分的 v-for 循环,所有部分都有一个设置为 ON 的开关组件。它设置为 on,因为它是该组的一部分。这个想法是,当一个人切换到 OFF 时,它将进行 API 调用以设置新状态并从组中删除。

我遇到的麻烦是,现在我正在将开关与 v-model 和计算属性绑定,并且当构建这些部分时,它们连接到 SAME 属性。因此,如果一个人被切换到关闭状态,他们都会这样做。我不知道如何将它们分开,这样当点击一个时,它只会影响那个。我还需要与单击以进行 API 调用的开关关联的数据。 PS,开关元素上的点击方法不起作用。

HTML

 <div class="col-md-6 col-sm-12" v-for="person in people"> 
     <switcher size="lg" color="green" open-name="ON" close-name="OFF" v-model="toggle"></switcher> 
</div>

VUE

computed: {
    people() { return this.$store.getters.peopleMonitoring },
    toggle: {
        get() {
          return true;
        },
        set() {
            let dto = {
              reportToken: this.report.reportToken,
              version: this.report.version
            }
            this.$store.dispatch('TOGGLE_MONITORING', dto).then(response => {
            }, error => {
              console.log("Failed.")
            });
          } 
        }
    }
}

【问题讨论】:

    标签: javascript for-loop data-binding vue.js vuejs2


    【解决方案1】:

    您可以将toggle 更改为数组:

    computed: {
        people() { return this.$store.getters.peopleMonitoring },
        toggle: {
            get() {
              return Array(this.people.length).fill(true);
            },
            set() {
                let dto = {
                  reportToken: this.report.reportToken,
                  version: this.report.version
                }
                this.$store.dispatch('TOGGLE_MONITORING', dto).then(response => {
                }, error => {
                  console.log("Failed.")
                });
              } 
            }
        }
    }
    

    还有你的 HTML:

    <div class="col-md-6 col-sm-12" v-for="(person, index) in people"> 
      <switcher size="lg" color="green" open-name="ON" close-name="OFF" v-model="toggle[index]"></switcher> 
    </div>
    

    【讨论】:

    • 这似乎正是我所需要的,但由于某种原因,开关现在甚至不会点击...
    • “甚至不会点击”?你这是什么意思?
    • 我更新了我的答案,我错过了toggle.get()中的length
    • 是的,我更正了。当您单击它们时,开关切换不会做任何事情。 set 函数没有运行。
    • 好像不喜欢v-model里面的[index]。如果我把它拿出来,所有的开关都会移到关闭位置,点击时设置功能会运行。
    猜你喜欢
    • 2020-04-13
    • 2019-03-27
    • 1970-01-01
    • 2020-07-01
    • 2021-02-09
    • 2019-06-16
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多