如下代码里
为什么js 里面的 el 元素必须绑定p 的id cc才能实现即时输入的效果 反而如果直接绑定到 input的id 无法实现?毕竟model的message 是作用在input上的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<p id = "cc">
<input v-model="message" placeholder="edit me" id="text">
<p>Message is: {{message}}</p>
</p>
<script type="text/javascript">
var vm = new Vue({
el:"#text",
data:{
message:''
}
})
</script>
</body>
</html>
你只绑定input,作用域只在input,那你的p标签就没有效果呀。所以你要在p里面。
id是个容器,容器包含了你的vue实例化涉及到的所有数据绑定和其它行为。你完全可以在一个页面中定义多个容器,但是,每个容器就好似一个函数作用域,作用域内的变量或者函数的访问行为由当前作用域环境决定。
你的示例可不仅仅是input啊,你绑定的数据还有p元素啊。所以,你得把容器id放在他们的父元素p上。
每个vue实例在DOM中都有一个作用范围,而el属性的值就决定了该vue实例作用域在DOM中的范围,当你设置了el属性的值时,就设定了在DOM中哪些界面元素可以访问vue实例里面的属性;如果你用过angular,那么el这个值的作用其实就和angular里面的contorller类似;