2017-01-24 51 views
1

我是VueJS中的新人。 我有一個小問題,我無法弄清楚。希望有人能給我一個提示。在Vuejs 2.0中使用「this」

我正在創建一個語音搜索按鈕,基本上當我單擊語音按鈕時,它會記錄我的語音並將其輸出到輸入屬性中。

<input type="text" name="inputSearch" id="inputSearch" 
v-model="inputSearch" class="form-control" x-webkit-speech> 

這是我在VueJS

<script> 
export default { 
     data() { 
      return { 
        inputSearch: '', 
        show: false 
       } 
     }, 
     methods: { 
      voiceSearch: function(event){ 
        this.inputSearch = ''; 
        this.show = false; 
        if (window.hasOwnProperty('webkitSpeechRecognition')) { 
        var recognition    = new webkitSpeechRecognition(); 
        recognition.continuous  = false; 
        recognition.interimResults = false; 
        recognition.lang   = "en-US"; 
        recognition.start(); 
        recognition.onresult = function(e) { 
        this.inputSearch = e.results[0][0].transcript; 
        recognition.stop(); 
         }; 
        recognition.onerror = function(e) { 
          alert('There are something wrong...'); 
          recognition.stop(); 
        }; 



        }else { 
         alert('Your browser does not support HTML5/WebKitSpeech. You are not able to use this functionality'); 
        } 

      } 

     } 
    } 
</script> 

腳本我能夠得到的聲音recoginization的文本,但在輸入形式不能表現出來。

感謝,

回答

3

而不是使用ES6,這使這個完整的範圍內,這樣的function使用箭頭語法:

   recognition.onresult = (e) => { 
        this.inputSearch = e.results[0][0].transcript; 
        recognition.stop(); 
       }; 
       recognition.onerror = function(e) { 
         alert('There are something wrong...'); 
         recognition.stop(); 
       }; 

或另一種選擇是保存this在其他一些變量和使用該變量如下:

   var that = this 
       recognition.onresult = function(e) { 
        that.inputSearch = e.results[0][0].transcript; 
        recognition.stop(); 
       }; 
       recognition.onerror = function(e) { 
         alert('There are something wrong...'); 
         recognition.stop(); 
       }; 

你可以看看我的相似答案here

+0

完美地工作!謝謝 – trinhdh