Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vue-如何在v-if或组件中使用窗口对象_Javascript_Vue.js - Fatal编程技术网

Javascript Vue-如何在v-if或组件中使用窗口对象

Javascript Vue-如何在v-if或组件中使用窗口对象,javascript,vue.js,Javascript,Vue.js,我试图在Vue条件内使用窗口对象: <li v-if="window.SpeechRecognition || window.webkitSpeechRecognition"> <a href="#">Voice</a> </li> 如果用户的浏览器支持函数SpeechRecognition,我如何解决此错误并仅显示HTML元素?您只能引用模板中的变量,这些变量的作用域为相关的Vue实例。警告是说您的Vue实例没有名为window的属性或

我试图在Vue条件内使用窗口对象:

<li v-if="window.SpeechRecognition || window.webkitSpeechRecognition">
    <a href="#">Voice</a>
</li>

如果用户的浏览器支持函数
SpeechRecognition
,我如何解决此错误并仅显示HTML元素?

您只能引用模板中的变量,这些变量的作用域为相关的Vue实例。警告是说您的Vue实例没有名为
window
的属性或方法(这不是您要引用的内容)

只需将Vue实例(
speechRecognition
或其他)上的数据属性设置为
v-if
语句中的值,然后引用该属性,而不是尝试从模板内部直接访问
窗口
对象(这是无法做到的):


  • 在Vue论坛中有帮助吗?vahdet链接了什么。解释。。。而在DOM中,作用域是“this”(组件),因此它正在尝试这样做。而不是窗口。如果我只是在数据中声明
    window:window
    ,该怎么办?@Milano您可以这样做,但它会使
    window
    对象的每个属性都是被动的,这不是超级性能。
    [Vue warn]: Property or method "window" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.
    
    data() {
      return {
        speechRecognition: window.SpeechRecognition || window.webkitSpeechRecognition,
      }
    }
    
    <li v-if="speechRecognition">
      <a href="#">Voice</a>
    </li>