2017-12-14 11 views
0

私はvueのメソッドを書こうとしていますが、元のコードはここにあり、実行可能です。vueの方法を適切に分類するにはどうすればいいですか?

new Vue({ 
 
    el: '#app', 
 
    data: { 
 
     buttonText : 'A' 
 
    }, 
 
    methods: { 
 
    clickA: _.throttle(function() { 
 
     var date = new Date(); 
 
     var time = date.toLocaleTimeString(); 
 
     console.log('A clicked', time) 
 
     this.buttonText = 'my button' + time; 
 
    }, 1000) 
 
    } 
 
});
<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script> 
 
<script src="https://unpkg.com/[email protected]/lodash.min.js"></script> 
 
<div id="app"> 
 
    <button type="button" @click="clickA">{{buttonText}}</button> 
 
</div>

私は、vue-class-componentを使用して、次のように分類しようとしていることは、コンパイルされますが、クリックが機能しません。

<script lang="ts"> 
import Vue from 'vue' 
import { Component } from 'vue-property-decorator' 
import throttle from 'lodash/throttle' 

@Component 
export default class App extends Vue { 
    clickA() { 
    throttle(function() { 
     var date = new Date(); 
     var time = date.toLocaleTimeString(); 
     console.log('A clicked', time) 
     this.buttonText = 'my button' + time; 
    }, 1000) // max one submit per second 
    } 
} 
</script> 

答えて

1

throttleは関数を返します。そうthrottle()を呼び出すと、このようなclickAに割り当て:

<script lang="ts"> 
import Vue from 'vue' 
import { Component } from 'vue-property-decorator' 
import throttle from 'lodash/throttle' 

@Component 
export default class App extends Vue { 
    clickA = throttle(function() { 
     var date = new Date(); 
     var time = date.toLocaleTimeString(); 
     console.log('A clicked', time) 
    }, 1000) // max one submit per second 
} 
</script> 

EDIT:VUE-クラスコンポーネントの文書で

<button type="button" @click="clickA">{{buttonText}}</button> 

スクリプト

<script lang="ts"> 
import Vue from 'vue' 
import { Component } from 'vue-property-decorator' 
import throttle from 'lodash/throttle' 

@Component 
export default class App extends Vue { 
    buttonText = 'my button'; 

    clickA = throttle(() => { 
     var date = new Date(); 
     var time = date.toLocaleTimeString(); 
     console.log('A clicked', time) 
     /// change button text 

     this.buttonText = 'my button' + time; 


    }, 1000) // max one submit per second 
} 
</script> 
+0

、方法が可能直接メソッドとして記述されます。なぜここに財産として書かれなければならないのですか? –

+0

@DanielYCLin loodashの 'throttle'が新しい機能を返すので、 –

+0

あなたは 'this'の使い方を表示するために質問とあなたの答えを変更できますか?たとえば、クリックすると、ボタンのテキストを変更します –

関連する問題