vue之数据的双向绑定

2019-03-02  本文已影响0人  蜗牛ICU

1、vue 实现数据的双向绑定:
          实现:
            前端发起请求将服务端后台数据取回之后,渲染前端页面, 当前端页面修改内容时,对应的数据体中的数据也会发生相应的变化。
           只有表单元素才能进行数据的双向绑定,原始的表单控件有: input 、checkbox、textarea、radio、select 等。
           vue 指令 directive 只是 dom 上的行间属性, vue 给这类属性赋予了一定的意义,来实现特殊的功能,所有的指令都是以 v- 开头, value 属性默认情况下会被vue 忽略 selected和checked 都没有意义。
           v-model 会将 data中对应的字段的值赋予输入框中, 当输入框的值改变会影响数据的变化。

 案例:
          <div id="app">
                     {{msg}}
                    <!--表单元素-->
                    <input type="text" v-model="msg"/>
          </div>

2 、vue 常用指令:
         ① v-model、
         ② v-text 相当于 {{}} 防止{{}} 出现在页面上 、
         ③ v-once 只绑定一次 当数据在次变化,页面也不会刷新。

案例:
          <div v-once>
                  {{msg}} {{msg}}
          </div>

          ④ v-html 把html字符当做html 渲染。

 案例:
            后台返回数据:  msg :'<p>hello</p>'
            正常的话页面展示之后会是 : <p>hello</p>, 但是添加上 v-html 就会将他当做 html 渲染了.
            <div v-html="msg"></div>

3 、vue 从 data 中获取复杂类型:
对象获取:
          vue 会循环 data 中的数据, 依次的添加 getter 和 setter 方法。

  案例:



        <script>
                  let vm = new Vue({
                      el:"#app",
                    data:{
                       a:{}    
                    }
                  }) </script>

         页面从 a 中获取值 school 就不会获取到值,就不会形成响应式的数据变化。如果想在 a 中获取 shcool 字段的值,需要初始化数据,否则新加的属性不会导致页面刷新:

案例: 第一种方式
              <body>
                    <div id="app">
                    {{a.school}}
                    </div>
              <script src="./node_modules/vue/dist/vue.js"></script>
            <script>
                    let vm = new Vue({
                        el:"#app",
                         data:{
                        a:{
                            school:''
                        }    
                    }
                })    
            </script>

            </body>
QQ图片20190302164049.png
案例: 第二种方式:
    vm.$set(vm.a ,'school',1);
案例: 第三种方式:
      替换原对象。
      vm.a={school:'北京大学',age:7,address:'zxxxxx'}

数组获取:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app">
        {{arr[1]}}
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
<script>
    let vm = new Vue({
        el:"#app",
        data:{
                arr:[1,3,4,21,31423]
        }
    })    
</script>

</body>
</html>

如果想将数组中的所有数据展示出来,直接是 {{arr}} 就行了。

修改数组中的值:
通过 pop push shift unshift sort reserve spalice 修改数组中的值。

上一篇下一篇

猜你喜欢

热点阅读