vue样式条件和对象渲染

    xiaoxiao2025-03-15  26

    mounted  准备,安排

     

    href  hyptertext reference 超文本引用,link和a标签使用

     

    src  是source 源的意思,script和img标签使用

     

    组件:

     

    # day10(Vue)

     

     

     

    #### 一、Vue控制style样式(了解)  

     

    > Vue通过修改html的style属性值(行内式)控制 css  

     

    ```html

        <div id="app">

            <!-- 字典 、对象 、列表 -->

            <div :style="{color:mycolor, fontSize:myfontSize}">11111111111</div>

            <div :style="myobject1">222222</div>

            <!-- style列表  多个对象的引用 -->

            <div :style="[myobject1, myobject2]">3333</div>

        </div>

        <script>

            var vm = new Vue({

                el: '#app',

                data: {

                    mycolor: 'red',

                    myfontSize: '60px',

                    myobject1: {

                        color: 'blue',

                        fontSize: '100px'

                    },

                    myobject2: {

                        background: '#ccc'

                    }

                }

            })

        </script>

    ```

     

     

     

    #### 二、条件渲染

     

    > 通过条件指令可以控制元素的创建(显示)或者销毁(隐藏)

     

    - v-if

     

      > 条件判断使用 v-if 指令

     

    - v-else

     

      >  v-else 指令给 v-if 添加一个 "else" 块

     

    - v-else-if

     

      > 用作 v-if 的 else-if 块

     

    -  v-show 

     

      > 使用v-show 指令显示和隐藏元素,与v-if最大区别在于v-show不删除元素

     

    ```html

        <div id="app">

            <!-- false 表示隐藏(删除 -- 销毁 标签隐藏) -->

            <div v-if="bool2">111111111</div>

            <!-- if  else -->

            <div v-if="bool2">v-if</div>

            <div v-else>else</div>

            <!-- 多重渲染的写法 -->

            <div v-if="type == 'A'">A</div>

            <div v-else-if="type == 'B'">B</div>

            <div v-else>daqiu</div>

            <!-- v-show="bool":true显示  false隐藏display:none -->

            <div v-show="bool2">v-show</div>

        </div>

        <script>

            var vm = new Vue({

                el: '#app',

                data: {

                    bool1: true,

                    bool2: false,

                    type: 'D'

                }

            })

        </script>

    ```

     

    #### 三、列表与对象渲染 

     

    > 通过v-for指令可以将一组数据渲染到页面中,数据可以是数组或者对象

    >

    > 语法格式: v-for= '' data in container"

     

    ```html

        <div id="app">

            <!--  v-for="临时变量  in 列表" -->

            <ul>

                <li v-for="i in list1">{{ i }}</li>

            </ul>

            <ul>

                <!-- 1:数据;2:下标 -->

                <!-- <li v-for="(1, 2) in list"></li> -->

                <li v-for="(i, j) in list1">{{j+1}}、{{i}}</li>

            </ul>

            <ul>

                <!-- js对象 -->

                <!-- i 表示的是value -->

                <li v-for="i in dict1">{{ i }}</li>

            </ul>

            <ul>

                <!-- i:表示value,j:key值 -->

                <li v-for="(i, j) in dict1">{{j}}:{{i}}</li>

            </ul>

        </div>

        <script>

            var vm = new Vue({

                el: '#app',

                data: {

                    // 数组

                    list1: ['朱毅', '王金泉', '林招亮'],

                    // 对象

                    dict1:{'name':'小张','age':30}

                }

            })

        </script>

    ```

     

     

     

    #### 四、绑定表单数据

     

    > **v-model** 指令用于设置表单控件value属性值

    >

    > 数据双向绑定:当数据发生变化的时候,视图也就发生变化,当视图发生变化时,数据也会跟着同步变化

     

    - **文本输入框、下拉框框架绑定**

     

    ```html

        <div id="app">

            <!-- v-model的值用于设置表单控件value属性值-->

            <input type="text" v-model="txt1">

            <div>{{txt1}}</div>

            <select v-model="sel1">

                <option value="0">北京</option>

                <option value="1">上海</option>

                <option value="2">广州</option>

            </select>

            <div>{{sel1}}</div>

        </div>

        <script>

            var vm = new Vue({

                el: '#app',

                data: {

                    txt1: '默认值',

                    sel1: 0

                }

            })

        </script>

    ```

     

    - **单选框、复选框数据绑定**

     

      ```html

          <div id="app">

              <div>{{myradio}}</div>

              性别:

              <input type="radio" v-model="myradio" value="nan"> 男

              <input type="radio" v-model="myradio" value="nv"> 女

              <div>{{list1}}</div>

              兴趣爱好:

              <input type="checkbox" value="read" v-model="list1"> 读书

              <input type="checkbox" value="bahe" v-model="list1"> 拔河

              <input type="checkbox" value="lol" v-model="list1"> lol

          </div>

          <script>

              var vm = new Vue({

                  el: '#app',

                  data: {

                      myradio: 'nan',

                      list1: ['bahe']

                  }

              })

          </script>

      ```

     

     

     

    #### **五、Vue生命周期 ** new  init  del

     

    > 每个Vue实例在被创建到销毁要经过一系列的过程,这整个过程称为Vue实例的生命周期

    >

    > Vue在生命周期不同的阶段点会自动运行一些函数, 这些函数称为Vue生命周期的钩子函数

     

    - **生命周期钩子函数:**

     

      - #### beforeCreate

     

        > 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用

     

      - #### created  vue对象 , list1

     

        > 在实例创建完成后被立即调用

     

      - #### beforeMount

     

        > 在挂载开始之前被调用:相关的 render 函数首次被调用

     

      - #### mounted(最常用)

     

        > 实例挂载到dom之后被调用,可以当成是vue对象的ready方法来使用

     

      - #### beforeUpdate

     

        > 数据发生变化前调用

     

      - #### updated

     

        > 数据发生变化后调用

     

     

     

     

    #### 六、Vue与服务端数据交互

     

    > vue.js没有集成ajax功能,要使用ajax功能,使用vue官方推荐的axios.js库来做ajax的交互

     

    - **axios 使用**

     

      - **引入函数库**

     

        `<script src="js/vue.min.js"></script>`

     

        `<script src="js/axios.min.js"></script>`

     

      - **axios参数**

     

        ```html

        axios({

          //请求方式

          method: 'post',

          //请求路径

          url: '/user/12345',

          //请求参数

          data: {

            name: 'xxx',

            pwd: 'yyy'

          }

        })

         //访问成功回调的方法

        .then(function(dat){

            console.log(dat)

        })

        //访问失败回调的方法

        .catch(function(e){

        })

        ```

     

    - **综合小案例(miniweb)**

     

     

    ```html

        <script src="js/vue.min.js"></script>

        <script src="js/axios.min.js"></script>

     

        <div class="container" id="container">

                <table class="table table-hover">

                    <tr v-for="i in list1">

                        <td>{{i.id}}</td>

                        <td>{{i.code}}</td>

                        <td>{{i.sname}}</td>

                        <td>4.40%</td>

                        <td>全新好</td>

                        <td>16.05</td>

                        <td><input type="button" value="添加" name="toAdd"></td>

                    </tr>

                </table>

        </div>

        <script>

            var vm = new Vue({

                el: '#container',

                data: {

                    list1: []

                },

                //vue实例与dom挂载好后,自动回调的方法

                mounted: function () {

                    axios({

                        url: '/index_data',

                        method: 'get'

                    }).then(function (dat) {

                        console.log(dat.data)

                        // 数据放到列表list1 dat.data是[]  list1重新赋值

                        // this.list1 = dat.data  -- this指向不是对象  窗口对象

                        // alert(this)

                        vm.list1 = dat.data

                    }).catch(function (e) {

                        // 请求失败

                    })

                }

            })

        </script>

    ```

    最新回复(0)