Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在vue.js中动态设置@click?_Javascript_Vue.js - Fatal编程技术网

Javascript 如何在vue.js中动态设置@click?

Javascript 如何在vue.js中动态设置@click?,javascript,vue.js,Javascript,Vue.js,我有一个对象数组,其中操作是vue对象的方法 如何在v-for循环中动态设置@单击 我试图使用this.m1、“this.m1”、“m1”,但我得到了一个错误: fns.apply不是一个函数 Javascript: new Vue({ el: "#app", data: { items: [ { title: "Learn JavaScript", action: this.m1 }, { title: "Learn Vue", action: "m2"

我有一个对象数组,其中操作是vue对象的方法

如何在v-for循环中动态设置
@单击

我试图使用this.m1、“this.m1”、“m1”,但我得到了一个错误:

fns.apply不是一个函数

Javascript:

new Vue({
  el: "#app",
  data: {
    items: [
      { title: "Learn JavaScript", action: this.m1 },
      { title: "Learn Vue", action: "m2" },
      { title: "Play around in JSFiddle", action: "this.m3"},
      { title: "Build something awesome", action: "m4"}
    ]
  },
  methods: {
    m1() {
        console.log('1');
    },
    m2() {
        console.log('2');
    },
    m3() {
        console.log('3');
    },
    m4() {
        console.log('4');
    },
  }
})
Html:



演示-

数据
应该是一个函数

new Vue({
  el: "#app",
  data () {
    return {
      items: [
        { title: "Learn JavaScript", action: this.m1 },
        { title: "Learn Vue", action: this.m2 },
        { title: "Play around in JSFiddle", action: this.m3},
        { title: "Build something awesome", action: this.m4}
     ]
    }
  },
  methods: {
    m1() {
        console.log('1');
    },
    m2() {
        console.log('2');
    },
    m3() {
        console.log('3');
    },
    m4() {
        console.log('4');
    }
  }
})

演示

数据
应该是一个函数

new Vue({
  el: "#app",
  data () {
    return {
      items: [
        { title: "Learn JavaScript", action: this.m1 },
        { title: "Learn Vue", action: this.m2 },
        { title: "Play around in JSFiddle", action: this.m3},
        { title: "Build something awesome", action: this.m4}
     ]
    }
  },
  methods: {
    m1() {
        console.log('1');
    },
    m2() {
        console.log('2');
    },
    m3() {
        console.log('3');
    },
    m4() {
        console.log('4');
    }
  }
})

演示

您需要在单个方法中传递item对象,然后根据需要执行操作

var-app=新的Vue({
el:“应用程序”,
数据:{
项目:[
{标题:“学习JavaScript”,动作:“m1”},
{标题:“学习Vue”,动作:“m2”},
{标题:“在JSFIDLE中玩”,动作:“m3”},
{标题:“打造令人敬畏的东西”,动作:“m4”}
]
},
方法:{
调用方法(项目){
console.log(item.action);
}
}
})

您需要在单个方法中传递item对象,然后根据需要执行操作

var-app=新的Vue({
el:“应用程序”,
数据:{
项目:[
{标题:“学习JavaScript”,动作:“m1”},
{标题:“学习Vue”,动作:“m2”},
{标题:“在JSFIDLE中玩”,动作:“m3”},
{标题:“打造令人敬畏的东西”,动作:“m4”}
]
},
方法:{
调用方法(项目){
console.log(item.action);
}
}
})

如果将方法名称存储在action属性中,如
action:“m1”
,则可以通过
“invokeMethod(item.action)”将这些名称传递给方法(比如
invokeMethod
)。现在,在这个
invokeMethod
中,您可以通过调用
this[methodName]()
来调用相关函数,其中
this[methodName]
相当于说
this[“m1”]

var-app=新的Vue({
el:“应用程序”,
数据:{
项目:[
{标题:“学习JavaScript”,动作:“m1”},
{标题:“学习Vue”,动作:“m2”},
{标题:“在JSFIDLE中玩”,动作:“m3”},
{标题:“打造令人敬畏的东西”,动作:“m4”}
]
},
方法:{
invokeMethod(方法名){
这个[methodName]();
},
m1(){
console.log('1');
},
m2(){
console.log('2');
},
m3(){
console.log('3');
},
m4(){
console.log('4');
}
}
})

如果将方法名称存储在action属性中,如
action:“m1”
,则可以通过
“invokeMethod(item.action)”将这些名称传递给方法(比如
invokeMethod
)。现在,在这个
invokeMethod
中,您可以通过调用
this[methodName]()
来调用相关函数,其中
this[methodName]
相当于说
this[“m1”]

var-app=新的Vue({
el:“应用程序”,
数据:{
项目:[
{标题:“学习JavaScript”,动作:“m1”},
{标题:“学习Vue”,动作:“m2”},
{标题:“在JSFIDLE中玩”,动作:“m3”},
{标题:“打造令人敬畏的东西”,动作:“m4”}
]
},
方法:{
invokeMethod(方法名){
这个[methodName]();
},
m1(){
console.log('1');
},
m2(){
console.log('2');
},
m3(){
console.log('3');
},
m4(){
console.log('4');
}
}
})