Javascript 在vue.js中将数据属性作为函数参数传递

Javascript 在vue.js中将数据属性作为函数参数传递,javascript,vue.js,methods,Javascript,Vue.js,Methods,而不是有几个看起来像: showDiv1(){ this.showDiv1 = true }, showDiv2(){ this.showDiv2 = true } 我正在尝试创建一个类似于: showElements(...elementNames){ elementNames.forEach(name => { this.$data.name = true }) } 其想法是从数据中传递一个或几个属性,当调用该方法时,这

而不是有几个看起来像:

showDiv1(){ 
    this.showDiv1 = true
},
showDiv2(){ 
    this.showDiv2 = true
}
我正在尝试创建一个类似于:

showElements(...elementNames){
     elementNames.forEach(name => {
           this.$data.name = true
     })
}
其想法是从数据中传递一个或几个属性,当调用该方法时,这些元素应该显示在屏幕上

在数据中,我有如下内容:

  data() {
      return {
           div1 = false,
           div2 = false
      }
  }
 data() {
      return {
           div1 = false,
           div2 = false
      }
  }
 data() {
      return {
           div1: false,
           div2: false
      }
  }
 <button @click="showElements(div1)">Show<button>
在html中,我尝试通过以下几种方式调用click函数:

  <button @click="showElements('div1')">Show<button>
  <button @click="showElements(div1)">Show<button>
  <div v-if="div1">
       <p>Hello</p>
  </div>    
Show
显示
你好


但是什么也没发生。

似乎您有语法错误。而不是像这样写入数据对象:

  data() {
      return {
           div1 = false,
           div2 = false
      }
  }
 data() {
      return {
           div1 = false,
           div2 = false
      }
  }
 data() {
      return {
           div1: false,
           div2: false
      }
  }
 <button @click="showElements(div1)">Show<button>
你应该这样写:

  data() {
      return {
           div1 = false,
           div2 = false
      }
  }
 data() {
      return {
           div1 = false,
           div2 = false
      }
  }
 data() {
      return {
           div1: false,
           div2: false
      }
  }
 <button @click="showElements(div1)">Show<button>
确保只使用适合数据对象中对象的语法。然后,你可以这样称呼它:

  data() {
      return {
           div1 = false,
           div2 = false
      }
  }
 data() {
      return {
           div1 = false,
           div2 = false
      }
  }
 data() {
      return {
           div1: false,
           div2: false
      }
  }
 <button @click="showElements(div1)">Show<button>
Show

还有一件事,当访问数据时,实际上不需要写入$data。只需写“this.name”即可访问您的数据

动态属性名称应使用括号表示法访问:

showElements(...elementNames){
     elementNames.forEach(name => {
           this[name] = true
     })
}
该方法应使用如下方式:

<button @click="showElements('div1')">Show<button>
Show

Yair,感谢您的回复。我在这里确实犯了一个错误,显示了数据的外观,但在我的Vue组件中,我有正确的语法。此外,我尝试在没有$data部分的情况下编写此.name,但单击后仍然没有任何结果。您会遇到什么错误?你应该把它贴在这里,这样我们可以得到更多的信息。另外,如果你可以发布你的全部代码,这会很有帮助,看看是否还有其他什么可能导致这个问题。Estus,我试过了,但在点击按钮后,什么也没有发生。你可能尝试了不同的方法。这是可行的。看到我的坏消息了。我没有在代码中看到/编写它。谢谢!