在 Vuejs 2.0 中使用 "this"

Using "this" in Vuejs 2.0

我是 VueJS 的新手。 我有一个小问题,我无法弄清楚。希望有人能给我提示。

我正在创建一个语音搜索按钮,基本上当我单击语音按钮时它会记录我的声音并将其打印到表单的输入属性中。

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

我可以从语音识别中获取文本,但无法在输入表单中显示。

谢谢,

而不是使用 function 使用 ES6 的箭头语法,它保持 this 的范围完整,像这样:

                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();
                };

你可以看看我类似的回答