【零基础入门Vue0008】_数据绑定

151 阅读2分钟

一、绑定的概念

<a v-bind:href="school.url.toUpperCase()">点我去{{scholl.address}学习}</a>中href的属性值要看表达式执行的结果,表达式执行结果是一个超链接,那么href的属性值就是一个超链接。所以,属性名和属性值的表达式之间就有一种绑定的关系。例如:生活中例子,你座下,裤子就座下,绑定在一起了。靠指令来完成数据绑定。之前的v-bind也完成数据绑定,但是,还有一个指令可以完成数据绑定,完成的事情还要比v-bind指令要高级。

<body>
<!-- 准备好一个容器 -->
<div id="root">
  单向数据绑定:<input type="text" :placeholder="school.name"/><br>
  双向数据绑定:<input type="text" :value="school.name"/>
</div>
<script src="js/vue.js"></script>
<script>
<!-- 创建Vue实例 -->
  const vm = new Vue({
    el:'#root',
    data:{
      school:{
        name:"昆一中"
      }
    }
  })
</script>
</body>

image.png

(1)v-bind最大的特点:单向数据绑定

image.png

(2)v-module可以完成双向数据绑定:

module有模型的意思。

<body>
  <div id="root">
    双向数据绑定1:<input type="text" v-model:value="school"><br>
    双向数据绑定2:<input type="text"v-model::value="school">
  </div>
  <script src="js/vue.js"></script>
  <script>
    const vm  = new Vue({
      el:'#root',
      data:{
        school:'昆一中'
      }
    })
  </script>
</body>

image.png

(3)不是所有属性都能使用v-module指令的。

<body>
  <div id="root">
    双向数据绑定1:<input type="text" v-model:value="school"><br>
    双向数据绑定2:<input type="text"v-model::value="school">
    <!-- 是所有属性都能使用v-module的 -->
    <h2 v-bind:x="school">v-bind是可以的(会出现x=昆一中的属性)---你好啊</h2>
    <h2 v-module:x="school">v-module是不可以的(不会出现x=昆一中的属性)---你好啊</h2>
  </div>
  <script src="js/vue.js"></script>
  <script>
    const vm  = new Vue({
      el:'#root',
      data:{
        school:'昆一中'
      }
    })
  </script>
</body>

展示效果如下:

image.png

报错信息如下:

image.png

总结:

v-module只能应用在表单类元素(输入类元素)上,也就是要有value值才行:

h2是没有value值的,不能给其做双向数据绑定。

解析:表单类元素、输入类元素都是让用户能跟其产生交互的,随着用户的输入和删除,这个元素value值在发生变化。而h2这种标题类的标签,不可以进行输入,不能输入就没有value值,没有value值就证明是不能捕获用户的输入,连输入都捕获不了,不可能回头影响数据的变化,就没有意义了。

输入类元素汇总:

input、单选框、多选框、select框、多行输入等。

这些输入类元素都有一个共同点:都有value值。

因为v-modulevalue进行说话的,元素如果没有value是不可以的,v-module是不能工作的。

二、总结

Vue中有两种数据绑定的格式:

第一种:单向绑定(v-bind):数据只能从data流向页面。

第二种:双向绑定(v-module):数据不仅能从data流向页面,还可以从页面流向data

注意:

  • 双向绑定一般都应用在表单类元素上。
  • v-module:value 可以简写为v-module,因为v-module默认收集的就是value值。
    • 例如:v-module:x="school"简写为v-module="school"
    • 删掉了冒号和value