简体   繁体   English

为什么我在 vue.js 中得到“避免使用 JavaScript 一元运算符作为属性名称”?

[英]Why I get 'avoid using JavaScript unary operator as property name' in vue.js?

In a vue.js template, I have this code to delete a joke在一个 vue.js 模板中,我有这个代码来删除一个笑话

<div  v-on:click="delete(joke)" class="btn btn-sm">delete</div>

and the method to do so:以及这样做的方法:

delete: function(joke) {
    console.log('delete requested');
    axios.post( this.BASE_URL + "/delete" , {
        id: joke.id,
        token: this.token,
    }).then( (res) => { 
        this.$router.push({ path: '/' });
    })
    .catch( (error) => {
        console.log(error);             
  });
},

I get this error:我收到此错误:

avoid using JavaScript unary operator as property name: "delete(joke)" in expression v-on:click="delete(joke)"避免在表达式 v-on:click="delete(joke)" 中使用 JavaScript 一元运算符作为属性名称:“delete(joke)”

The odd thing is that, in other components, I pass the same joke object to methods in the same manner and get no errors.奇怪的是,在其他组件中,我以相同的方式将相同的joke对象传递给方法并且没有出错。

I'm wondering what is wrong here and how to fix it?我想知道这里有什么问题以及如何解决?

I'm wondering what is wrong here我想知道这里有什么问题

delete is an operator defined in JavaScript. delete是 JavaScript 中定义的运算符

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete

and how to fix it?以及如何解决它?

Choose a different method name than delete ...选择与delete不同的方法名称...

You can name whatever you want as your property name in an object.您可以将任何您想要的名称命名为对象中的属性名称。 But binding in a v-on: requires to be an expression.但是在v-on:绑定需要是一个表达式。 Using delete keyword there supposed be uncompleted expression.使用delete关键字应该有未完成的表达式。 If you choose other than the reserved keyword, then you get the method that you have defined in your vue instance.如果您选择的不是保留关键字,那么您将获得您在 vue 实例中定义的方法。

I can see the following error on visual code IDE:我可以在可视化代码 IDE 上看到以下错误:

[vue-language-server] 'v-on' directives require that attribute value or verb modifiers. [vue-language-server] 'v-on' 指令需要该属性值或动词修饰符。

[vue-language-server] Parsing error: Unexpected end of expression. [vue-language-server] 解析错误:意外的表达式结束。

Thus to resolve the problem you must give a different name which is not reserved keyword in JavaScript.因此要解决这个问题,你必须给出一个不同的名字,它不是 JavaScript 中的保留关键字。

delete is a javascript reserve word its use to delete an object property. delete 是一个 javascript 保留字,用于删除对象属性。 so change method name.所以更改方法名称。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM