vue样式条件和对象渲染
发布日期:2021-05-10 07:23:03 浏览次数:14 分类:原创文章

本文共 4399 字,大约阅读时间需要 14 分钟。

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>

```

上一篇:DOM标签操作-增删改
下一篇:vue入门到使用

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月19日 05时00分21秒