【问题标题】:Props component on event VueJs事件 VueJs 上的道具组件
【发布时间】:2017-01-31 04:01:06
【问题描述】:

当最后触发事件时,我正在尝试访问组件的道具。该组件来自http://element.eleme.io/#/en-US/component/switch

它有几个props,比如name、value等。我希望能够在触发更改时获取开关的名称或值。

还有,如何访问触发 change 事件的 switch 的任何 props ?

我试过了,但我没有定义。

 <div v-for="organizer in organizers>
     <el-switch @change="changeOrganizers($event.target.name, $event.target.value)" :name="organizer.name">
    </el-switch>
</div>


var Main = {
    data() {
      return {
        value1: true,
      }
    },
    methods : {
        changeSwitch(name) {
      console.log(name)
      }
    }
  };
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')

http://jsfiddle.net/2hr6y79h/2/

谢谢

解决方案

<div v-for="organizer in organizers>
     <el-switch @change="changeOrganizers()" :name="organizer.name">
    </el-switch>
</div>


var Main = {
    data() {
      return {
        value1: true,
      }
    },
    methods : {
        changeSwitch() {
      console.log(event.currentTarget.checked);
      console.log(event.currentTarget.name)
      }
    }
  };
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')

【问题讨论】:

    标签: javascript vue.js vuejs2


    【解决方案1】:

    试试吧

    @change="changeSwitch"
    

    http://jsfiddle.net/2hr6y79h/3/

    这会给你带来价值。

    组件将(可能)使用

    this.$emit('change', this.value)
    

    将名称作为唯一参数传递给绑定的 "change" 事件处理程序。


    如果您希望 name 通过 props 传递,我怀疑它会改变,所以只需在您的 Vue 实例/组件中保存对它的引用,例如

    data () {
      return {
        value1: true,
        name: 'test-name'
      }
    }
    

    并使用

    <el-switch ... :name="name"
    

    然后您可以随时通过this.name访问它。

    【讨论】:

    • 谢谢菲尔,它对值很有效,但由于我的开关是动态创建的,我不想为每个开关声明一个变量来获取名称。还有其他可能吗?如果我想使用任何触发更改的开关道具,一般方法是什么?
    • 我编辑了代码,所以它是动态创建的。对不起,我第一次忘记准确了。
    【解决方案2】:
    <div v-for="organizer in organizers>
         <el-switch @change="changeOrganizers()" :name="organizer.name">
        </el-switch>
    </div>
    
    
    var Main = {
        data() {
          return {
            value1: true,
          }
        },
        methods : {
            changeSwitch() {
          console.log(event.currentTarget.checked);
          console.log(event.currentTarget.name)
          }
        }
      };
    var Ctor = Vue.extend(Main)
    new Ctor().$mount('#app')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 2017-12-23
      • 2018-02-25
      • 1970-01-01
      • 2019-03-01
      • 2017-11-18
      • 2019-06-07
      相关资源
      最近更新 更多