vue.js踩坑之ref引用细节点
vue.js组件使用中的细节点vue不建议我们在代码里面操作DOM,但是,在处理一些极其复杂的动画效果,不操作DOM,单单靠vue的数据绑定是无法完成实际需求的效果的。这就需要我们必须操作DOM。如何操作呢?通过ref 引用的形式,来操作DOM。下面我们给一个需求:当点击div的时候,div里面的内容被打印出来。步骤如下:1.首先起一个引用的名字,比如hello:ref='...
·
vue.js组件之H5
页面,DOM标签
或者组件
中,通过ref="自定义name名称"
引用的细节点
要点简介:[ 见下文案例 ]
- 使用
is=" "
解决H5出现的标签解析bug 。- 子组件中 使用data,data必须是 一个 函数!
- DOM标签中,引用ref定义的name:获得的是该DOM元素;
如下文的:this.$refs.hello.innerHtml
- 组件中,引用ref:获得的是该DOM对象
如下文的:this.$refs.name2.number
vue不建议我们在代码里面操作DOM,但是,在处理一些极其复杂的动画效果,不操作DOM,单单靠vue的数据绑定是无法完成实际需求的效果的。这就需要我们必须操作DOM。如何操作呢?
通过ref
引用的形式,来操作DOM。
下面我们给一个需求:当点击div的时候,div里面的内容被打印出来。
步骤如下:
1.首先起一个引用的名字,比如hello
:
ref='hello'
通过引用名称拿到该ref对应DOM里面的内容。
重要代码如下:
<body>
<div id="app">
<div
ref="hello"
@click="handleClick"
>
hello , 通过ref命名引用 操作DOM元素 !
</div>
</div>
<script>
var app = new Vue({
el: '#app',
methods: {
handleClick: function() { alert(this.$refs.hello.innerHTML);
}
}
})
</script>
</body>
注意:
this.$refs
指页面所有引用。
2.如果是引用组件呢?
我们先看一段代码:
<body>
<div id="app">
<counter></counter>
<counter></counter>
</div>
<script>
Vue.component('counter', {
template: '<button @click="handleClick">{{number}}</button>',
data: function() {
return {
number: 0
}
},
methods: {
handleClick: function() {
this.number ++;
}
}
})
var app = new Vue({
el: '#app',
})
</script>
</body>
下面我们再给一个需求:数字的求和运算。
全部代码如下:
<body>
<div id="app">
<counter ref="name2" @change="handleChange"></counter>
<counter ref="name3" @change="handleChange"></counter>
<div>{{total}}</div>
</div>
<script>
//子组件
Vue.component('counter', {
template: '<button @click="handleClick">{{number}}</button>',
data: function() {
return {
number: 0
}
},
methods: {
handleClick: function() {
this.number ++;
this.$emit('change')//父组件中监听变化
}
}
})
//父组件
var app = new Vue({
el: '#app',
data: {
total: 0
},
methods: {
handleChange: function() {
console.log(this.$refs.name2.number);
console.log(this.$refs.name3.number);
this.total = this.$refs.name2.number + this.$refs.name3.number;
}
}
})
</script>
</body>
注意:
this.$refs.name2
是个对象!
这里使用了父子通信$emit()
,不懂没关系,可以翻典籍或查看对应的讲解博客。
以上就是关于 “ vue.js踩坑之ref引用细节点 ” 的全部内容。
更多推荐
已为社区贡献51条内容
所有评论(0)