Vue.js是由Evan You和Vue核心团队创建的渐进式JavaScript框架,这是一个易于访问的核心库,只专注于视图层。它还具有庞大的支持库生态系统,可帮助您轻松构建响应式Web体验。
在这篇文章中,您将了解如何在Vue.js中引用组件中的HTML元素。
先决条件
这篇文章适合使用Vue的开发人员的各个阶段-包括初学者。 在阅读本文之前,您应该已经具备一些先决条件。
您将需要以下内容:
Node.js版本10.x或更高版本。 通过在终端/命令提示符中运行node -v
来验证您的版本
npm 6.7或以上
代码编辑器; 推荐Visual Studio Code
最新版本的Vue,已在
本文来源gao!%daima.com搞$代*!码网1
您的计算机上全局安装
您的计算机上已安装Vue CLI 3.0。 为此,请卸载旧的CLI
首先使用npm版本卸载-g vue-cli
,然后使用npm install -g @ vue / cli
安装新版本
下载Vue入门项目
解压缩下载的项目,导航到它,并运行npm install
来保持所有依赖项的最新状态
什么是refs?
引用是Vue实例属性,用于注册或指示对应用程序模板中的HTML元素或子元素的引用。
如果将ref
属性添加到Vue模板中的HTML元素,则可以引用该元素,甚至可以引用Vue实例中的子元素。 您也可以直接访问DOM元素。 它是一个只读属性,并返回一个对象。
为什么refs很重要?
ref
属性对于通过充当父$ref
属性中的键来选择包含它的dom
元素至关重要。例如,将ref属性放在input
元素中,会将父dom
节点公开为这样的。$refs.input
,或者可以这样说.refs[“input”]
。
通过在特定元素的引用上定义方法,可以很容易地操作dom元素。一个好的实例是将焦点添加到一个输入元素,其中:
this.$refs["input"].focus()
这样,refs就可以像javascript中的document.queryselector('.element')
或jquery中的$('.element')
一样使用。$refs
可以在vue.js实例内部和外部访问。但是,它们不是数据属性,因此不是反应性的。
在浏览器中进行模板检查时,它们根本不会显示,因为它不是html属性;它只是vue模板属性。
演示
如果你从一开始就关注这篇文章,你应该下载了starter项目并在vs代码上打开它。打开“组件”文件夹并将其复制到test.vue
文件中:
<template> <div> <h2>Hello this is for refs man!</h2> <p>You have counted {{this.counter}} times</p> <input type="text" ref="input"> <button @click="submit">Add 1 to counter</button> </div> </template> <script> export default { name: 'Test', data(){ return { counter: 0 } }, methods: { submit(){ this.counter++; console.log(this.ref) } } } </script>
现在使用以下命令在开发服务器中运行此命令:
npm run serve
您将看到用户界面显示一个简单的计数器,单击时会更新,但是当您在浏览器中打开开发人员工具时,您会注意到它未定义。
正确使用语法是非常重要的,因为这意味着Vue不认为这是一个错误,但它确实是。根据我们对vue refs
的了解,它们返回一个对象,但是根据未定义的响应判断,有问题。将下面的代码复制到test.vue
文件中:
<template> <div> <h2>Hello this is for refs man!</h2> <p>You have counted {{this.counter}} times</p> <input type="text" ref="input"> <button @click="submit">Add 1 to counter</button> </div> </template> <script> export default { name: 'Test', data(){ return { counter: 0 } }, methods: { submit(){ this.counter++; console.log(this.$refs) } } } </script>
当你运行这个并检查它,你会注意到它现在返回一个对象:
快速查看代码块将显示正确的语法:在模板中,它被称为ref
,但当我们在Vue实例中引用它时,它被称为$refs
。这是非常重要的注意,以免得到未定义的返回。您可以访问被引用元素的每个可能属性,包括模板中的元素。
让我们试着记录一些我们可能感兴趣的属性。test.vue
文件应为:
<template> <div> <h2>Hello this is for refs man!</h2> <p>You have counted {{this.counter}} times</p> <input type="text" ref="input"> <button @click="submit">Add 1 to counter</button> </div> </template> <script> export default { name: 'Test', data(){ return { counter: 0 } }, methods: { submit(){ this.counter++; console.log(this.$refs) } } } </script> <style scoped> p , input, button{ font-size: 30px; } input, button{ font-size: 20px; } ul { list-style-type: none; padding: 0; } li { display: inline-block; margin: 0 10px; } a { color: #42b983; } </style>
浏览器上的应用程序应该是这样的:
显示元素
要在dom
中显示html元素,请进入submit
方法并将方法代码更改为以下内容:
methods: { submit(){ this.counter++; console.log(this.$refs.input) } }
这里的输入是您先前在元素中创建的引用名称(ref=“input”
)。它可以是你选择的任何名字。
显示输入值
要显示HTML元素输入值(在用户界面的文本框中键入的字符串),请进入submit
方法并将代码更改为:
methods: { submit(){ this.counter++; console.log(this.$refs.input.value) } }
这将准确显示您键入的字符串,这表明与原始JavaScript和jQuery也可以实现的查询选择相似。
显示元素的url
可以在其中找到元素的网页也是可以与vue ref
一起显示的许多内容之一。进入submit
方法并将代码更改为:
methods: { submit(){ this.counter++; console.log(this.$refs.input.baseURI) } }
您还可以通过返回的对象信息访问ref
并使用ref
进行日志记录。
处理条件
js refs
也可以用于在dom中输出多个元素的元素内部,如使用v-for
指令的条件语句。refs在调用时返回一个项数组,而不是对象。为了说明这一点,创建一个简单的列表,如下所示:
<template> <div> <p v-for="car in 4" v-bind:key="car" ref="car"> I am car number {{car}}</p> <button @click="submit">View refs</button> </div> </template> <script> export default { name: 'Test', data(){ return { } }, methods: { submit(){ console.log(this.$refs) } } } </script>
在开发服务器中再次运行时,它将如下所示:
您可以在github上找到本教程的完整代码。
结论
这篇文章向您介绍了在Vue.js中引用DOM中的HTML元素。现在,您可以通过所有元素属性(例如值,子节点,数据属性,甚至是容纳该元素的基本URL)访问和记录这些元素。
原文地址:https://blog.logrocket.com/how-to-use-refs-to-access-your-application-dom-in-vue-js/
以上就是在Vue.js中使用refs访问您的应用程序DOM的详细内容,更多请关注gaodaima搞代码网其它相关文章!