2016-12-13 21 views
7

私は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> 

これは予想通りのデータインスタンスではないため、更新されていません。 vue js doc

すべてのヘルプは高く評価されていますvuejs docに は、私はちょうど方法でながら、これは十分であるアドレス指定を見ることができます。

大切にしてください。 thiswindowを指しているため

答えて

15

あなたはVueのインスタンスデータを取得するためにVueのインスタンス内thisを参照するには、矢印の機能を使用することはできません、正しいES6の構文は次のとおりです。矢印機能付き

setAccountType(typeId){ 
    this.accountType = typeId 
} 

JSFiddle:https://jsfiddle.net/zxqohh0L/

非矢印ES6関数を使用したJSFiddle:https://jsfiddle.net/zxqohh0L/1/

まだ矢印関数をメソッド内で使用できます自己。

+0

すばらしい答えです。 –

+0

非常に良い説明、私は矢印機能を持つ関数内のデータにアクセスするために掘っていた。あなたの答えは本当に私の問題を解決し、より良い理解にも役立ちます。 – krrr25

+0

ありがとうございました!これに2時間を費やしました。それは私を夢中にさせていた。 –

関連する問題