方法一:用特殊字符ref操作DOM
-
解决的问题: 在vue中操作DOM元素
步骤:- 给DOM元素设置ref属性的值
- 在Vue中的mounted选项下通过this.$refs.属性 获取到要操作的DOM
-
通过在控制台输出 this.$refs.ref属性值可以查看到要操作的dom元素的标签
-
通过如下代码可实现页面自动聚焦功能:
<div id='app'>
<input type="text" ref='txt'>
</div>
<script>
new Vue({
el: "#app",
data:{
},
mounted() {
// console.log(this.$refs.txt)
this.$refs.txt.focus();
}
})
方法二:自定义指令
- 使用场景:需要对普通 DOM 元素进行操作,这时候就会用到自定义指令
- 分类:全局注册和局部注册
1. 局部注册
- 在vm对象的选项中设置自定义指令 directives:{}
- directives:{
指令的核心名称 :{
inserted: function(使用指令时的DOM对象) {
具体的DOM操作 } }} - 在视图中通过标签去使用指令
//视图部分
<input v-focus type="text">
//实例部分
new Vue({
el: "#app",
directives: {
focus: {
inserted: function(el) {
el.focus();
}
}
2.全局注册
- 在创建 Vue 实例之前定义全局自定义指令Vue.directive()
- Vue.directive(‘指令的名称’,{ inserted: (使用指令的DOM对象) => { 具体的DOM操作 } } );
- 在视图中通过"v-自定义指令名"去使用指令
Vue.directive('focus',{insert:(el)=>{
el.focus();}
});
注意:
Vue.directive(自定义指令名) 不需要加v- 使用自定义指令时需要加v-
inserted: 当被绑定的元素插入到 DOM 中时,会被调用
补充:
1. 可将之前的静态页面哪里中的添加商品输入框实现自动聚焦效果~