12

我是 vue.js 的新手。我开始迁移我的 angularjs 应用程序。我正在使用 vue cli 生成一个新的 simple-webpack 项目。这将创建一个新的 webpack+vueLoader 项目。一切都很顺利,但现在我有一个问题。在我的@click 事件中,我想更改我的数据,但我无法访问该对象。'this' 不是数据实例。

我在这里想念什么?

<template>
    <input type="radio" name="account-type" @click="setAccountType(item.id)"/><span>{{item.name}}</span>
</template>
<script>
  export default {
     data() {
        return { accountType: null
     },
     methods: { setAccountType: (typeId) => this.accountType = typeId
  }
</script>

这不是预期的数据实例,因此 ui 未更新。在 vuejs doc 中,我可以看到在方法中解决这个问题就足够了: vue js doc

任何帮助表示赞赏。

亲切的问候。

4

1 回答 1

22

您不能使用箭头函数来引用thisVue 实例内部来获取 Vue 实例数据,因为this引用window,正确的 ES6 语法是:

 setAccountType(typeId){
   this.accountType = typeId
 }

带箭头功能的 JSFiddle:https ://jsfiddle.net/zxqohh0L/

具有非箭头 ES6 功能的 JSFiddle:https ://jsfiddle.net/zxqohh0L/1/

您仍然可以在方法本身内部使用箭头函数。

于 2016-12-13T11:19:36.320 回答