2017-09-25 6 views
1

私はそれを動作させることができませんでした。 v-on:clickイベントはVueインスタンスのメソッドを呼び出さない。ここでのコードは次のとおりです。VueJSオンクリックイベントが機能しない

<div id="app"> 
    <button class="btn btn-success" v-on:click="postEventData"> 
     <i class="icon wb-share"></i> Publish 
    </button> 
</div> 

Vueのインスタンス:

var vm = new Vue({ 
    el: '#app', 
    data: { 
     someData: 'fooBar' 
    }, 
    methods: { 
     postEventData: function() { 
      axios.post('/foobar', vm._data); 
     } 
    } 
}); 

任意の助けをいただければ幸いです!これに

+1

あなたの 'v-on:click'はちょうどいいと呼ばれています。このフィドルを見てくださいhttps://fiddle.jshell.net/v1qpt8d8/1/ –

+0

あなたの 'postEventData'メソッドで' vm'ではなく 'this'を参照する必要があります – thanksd

+0

ありがとうございます。でも、私はjsfiddleを貼り付けてコピーします。動かない。 – lostbyte

答えて

1

変更このaxios.post('/foobar', vm._data);

:、代わりにvmのVueのインスタンスを参照するためにthisを使用するより良い練習だろうと述べaxios.post('/foobar', this.data);

+0

私は通常の 'onclick =" vm.postEventData() "'を試しましたが、うまくいきました。しかし、私が 'vm._data'を' this.data'に変更した時、それもうまくいきません。なぜ私は理解できませんでした。 – lostbyte

1

I'm not seeing anything broken with your code.

。しかし、dataオブジェクトを取得するには、Vueインスタンスの_dataプロパティを参照する必要があります(はundefinedになります)。

dataのオブジェクトはthis._dataで参照してください。コードの匂いです。 Vueインスタンスのデータプロパティは、直接thisから直接アクセスするためのものです。オブジェクト全体にアクセスすると、そのパラダイムが破壊されます。

あなたは(たとえばpostData)そのためのデータプロパティを作成し、あなたのポストの要求に{ someData: 'fooBar' }を提出しようとしている場合とthis.postDataを経由してそれを参照:

var vm = new Vue({ 
    el: '#app', 
    data: { 
     postData: { someData: 'fooBar' } 
    }, 
    methods: { 
     postEventData: function() { 
      axios.post('/foobar', this.postData); 
     } 
    } 
}); 

​​とあなたのテンプレートで結構です。

+0

詳細情報をありがとう!私はあなたの提案を自分のコードで試し、後でコメントで出力を共有します。 – lostbyte

関連する問題