Javascript 如何在vue.js中动态设置@click?
我有一个对象数组,其中操作是vue对象的方法 如何在v-for循环中动态设置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"
@单击
我试图使用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');
}
}
})