vue数据

1.数据绑定:

Vue中有2种数据绑定的方式


1.单向绑定v-bind数据只能从 data 流向页面
2.双向绑定v-model数据不仅能从 data 流向页面,还可以从页面流向 data


备注:


1.双向绑定一般都应用在表单类元素上,如 <input><select><textarea>等
2.v-model:value可以简写为v-model,因为v-model默认收集的就是value值

<div id="root">
      <!-- 普通写法 -->
      <!-- 单向数据绑定:<input type="text" v-bind:value="name"><br/> -->
			<!-- 双向数据绑定:<input type="text" v-model:value="name"><br/> -->

      <!-- 简写 -->
      单向数据绑定:<input type="text" :value="name"><br/>
      双向数据绑定:<input type="text" v-model="name"><br/>

      <!-- 如下代码是错误的,因为 v-model 只能应用在表单类元素(输入类元素)上 -->
      <!-- <h2 v-model:x="name">你好啊</h2> -->
    </div>

2.MVVM模型 数据代理:

1.MVVM模型:


M:模型 Model,data中的数据
V:视图 View,模板代码
VM:视图模型 ViewModel,Vue实例


观察发现:


1.data中所有的属性,最后都出现在了vm身上
2.vm身上所有的属性 及Vue原型身上所有的属性,在 Vue模板中都可以直接使用 

 <div id="root">
        <h2>名称:{{ name }}</h2>
        <h2>战队:{{ rank }}</h2>
        <h2>测试:{{ $options }}</h2>
    </div>

    <script>
        Vue.config.productionTip = false
        new Vue({
            el: '#root',
            data: { 
                name: 'uzi',
                rank: 'RNG'
            }
        })
    </script>

2.Vue 中的数据代理:

数据代理:通过一个对象代理对另一个对象中属性的操作

Object.defineproperty方法:

let number = 18
let person = {
  name: '张三',
  sex: '男',
}

Object.defineProperty(person, 'age', {
  // value:18,
  // enumerable:true,		// 控制属性是否可以枚举,默认值是false
  // writable:true,			// 控制属性是否可以被修改,默认值是false
  // configurable:true	// 控制属性是否可以被删除,默认值是false

  // 当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值
  get() {
    console.log('有人读取age属性了')
    return number
  },

  // 当有人修改person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值
  set(value) {
    console.log('有人修改了age属性,且值是', value)
    number = value
  }

})
// console.log(Object.keys(person))
console.log(person)

1.Vue中的数据代理通过vm对象来代理data对象中属性的操作(读/写)
2.Vue中数据代理的好处:更加方便的操作data中的数据
3.基本原理
a.通过object.defineProperty()把data对象中所有属性添加到vm上
b.为每一个添加到vm上的属性,都指定一个 gettersetter
c.在gettersetter内部去操作(读/写)data中对应的属性

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Vue中的数据代理</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
  </head>
  <body>

    <div id="root">
      <h2>学校名称:{{ name }}</h2>
      <h2>学校地址:{{ address }}</h2>
    </div>

    <script type="text/javascript">
      Vue.config.productionTip = false

      const vm = new Vue({
        el: '#root',
        data: {
          name: '江西信息应用职业技术学院',
          address: '南昌'
        }
      })
    </script>

  </body>
</html>

相关推荐

  1. <span style='color:red;'>vue</span><span style='color:red;'>数据</span>

    vue数据

    2024-03-17 03:20:01      15 阅读
  2. vue数据绑定

    2024-03-17 03:20:01       39 阅读
  3. vue 数据类型转换

    2024-03-17 03:20:01       18 阅读
  4. Vue 数据校验

    2024-03-17 03:20:01       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 03:20:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 03:20:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 03:20:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 03:20:01       18 阅读

热门阅读

  1. 以太坊的扩容方案之二层网络 L2-Rollup & zkEVM

    2024-03-17 03:20:01       18 阅读
  2. linux让前台正在执行的命令转入后台并nohup的方法

    2024-03-17 03:20:01       20 阅读
  3. 动态规划 Leetcode 96 不同的二叉搜索树

    2024-03-17 03:20:01       21 阅读
  4. CSV Excel乱码问题 和 BOM标记

    2024-03-17 03:20:01       20 阅读
  5. SpringBoot之yml与properties配置文件格式的区别

    2024-03-17 03:20:01       19 阅读
  6. gazebo_ros和ros_ign_gazebo

    2024-03-17 03:20:01       17 阅读
  7. python calendar内置日历库函数方法

    2024-03-17 03:20:01       17 阅读
  8. python企业编码管理的程序(附源码)

    2024-03-17 03:20:01       20 阅读
  9. 链表快慢指针合集(力扣)

    2024-03-17 03:20:01       19 阅读