zoukankan      html  css  js  c++  java
  • vue初学 对v-model v-on 及简单数据的操作。

    刚开始接触vue.js,笨笨的我在网上自己找资料。看完vue的 v-model 及其点击事件后,写了一个小功能。

    首先,由于想简便样式的书写,所以引用的bootstrap库。

      <link rel="stylesheet" href="lib/bootstrap.min.css">
      <script src="lib/jquery-1.7.2.js"></script>
      <script src="lib/bootstrap.js"></script>
      <script src="vue.js"></script>
    

      然后我先用bootstrap把html代码书写出来。

    <div class="container">
            <form role="form">
                <div class="form-group">
                    <label for="username">用户名:</label>
                    <input type="text" id="username" class="form-control" placeholder="输入用户名">
                </div>
                <div class="form-group">
                    <label for="age">年 龄:</label>
                    <input type="text" id="age" class="form-control" placeholder="输入年龄">
                </div>
                <div class="form-group">
                    <input type="button" value="添加" class="btn btn-primary">
                    <input type="button" value="重置" class="btn btn-danger">
                </div>
            </form>
            <hr>
            <table class="table table-bordered table-hover">
                <caption class="h2 text-info">用户信息表</caption>
                <tr class="text-danger">
                    <th class="text-center">序号</th>
                    <th class="text-center">名字</th>
                    <th class="text-center">年龄</th>
                    <th class="text-center">操作</th>
                </tr>
                <tr class="text-center">
                    <td>1</td>
                    <td>blue</td>
                    <td>50</td>
                    <td>
                        <button class="btn btn-primary btn-sm">删除</button>
                    </td>
                </tr>
                <tr class="text-center">
                    <td>1</td>
                    <td>strive</td>
                    <td>16</td>
                    <td>
                        <button class="btn btn-primary btn-sm">删除</button>
                    </td>
                </tr>
                <tr>
                    <td colspan="4" class="text-right">
                        <button class="btn btn-danger btn-sm">删除全部</button>
                    </td>
                </tr>
                <tr>
                    <td colspan="4" class="text-center text-muted">
                        <p>暂无数据....</p>
                    </td>
                </tr>
            </table>
        </div>
    

      现在,让我们来用vueJs来完成这个功能,

      首先:

      

    new Vue({
                    el:'#box',
                    data:{
                        myData:[]
                    },
                    methods:{
                      
                    }
                });
    

      我们用myData来存储我们的数据。 如果这个数据为空。则显示暂无数据,如果不为空,则显示表格,加载这里面的数据。我们需要用到 vueJs 的 v-show:

      

    <tr v-show="myData.length != 0">
                    <td colspan="4" class="text-right">
                        <button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#layer">删除全部</button>
                    </td>
     </tr>
    <tr v-show="myData.length == 0">
              <td colspan="4" class="text-center text-muted">
                     <p>暂无数据....</p>
              </td>
     </tr>
    

      这样,如果myData里面有数据。则不显示暂无数据表格。不然就显示删除全部按钮。

    然后,我们如果有数据,则需要用v-for来加载数据。

     <tr class="text-center" v-for="item in myData">
                    <td>{{$index+1}}</td>
                    <td>{{item.name}}</td>
                    <td>{{item.age}}</td>
                    <td>
                        <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer" >删除</button>
                    </td>
                </tr>
    

      接下来,我们需要向myData里面添加数据。这时,我们会用到数据的双向绑定功能。 

     data:{
                        myData:[],
                        username:"",
                        age:''
           },
    
    <input type="text" id="username" class="form-control" v-model="username" placeholder="输入用户名" >
    
    <input type="text" id="age" class="form-control" v-model="age" placeholder="输入年龄" >
    

      接下来,我们需要给添加按钮绑定事件。用 v-on:click='';这里vue帮我们封装了点击事件的方法,可以用 @click=''来替代v-on:click;

    <input type="button" value="添加"  class="btn btn-primary" @click="add()" >
    

      现在我们需要在js中  vue对象中添加这个add方法。获取到数据,并添加到myData里面。

     methods:{
                        add:function(){
                            if(this.username!==""){
                                this.myData.push({
                                    name:this.username,
                                    age:this.age
                                });
                            }
                            this.username="";
                            this.age="";
                        }
                    }
    

      这样,我们就完成了第一步。添加功能以及成功了。接下来,我们做删除功能。首先,点击删除时。我们需要获取当前的index,在vue中,数据的key值,我们可以直接用$index来获取。我们需要把获取到的这个$index保存起来。

      

     data:{
                        myData:[],
                        username:"",
                        age:'',
                        nowIndex:"-200"
                    },
    
     <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer" @click="nowIndex=$index'">删除</button>
    

      我们需要给弹窗口的确定删除按钮绑定时间。并把这个nowIndex传入到当前方法。

    <button data-dismiss="modal" class="btn btn-danger btn-sm" @click="deletMsg(nowIndex)">确认</button>
    

      现在,和刚才add时,在方法中添加deletMsg方法:

    deletMsg:function(num){
                           this.myData.splice(num,1);
       }
    

      这样,我们的单个删除就做好了。最后,我们要做全部删除功能,点击全部删除时。我们需要把nowIndex重置为一个小于0的值。

                        <button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#layer" @click="nowIndex=-2">删除全部</button>
    

     然后,在deletMsg方法中判断:

    deletMsg:function(num){
                            if(num==-2){
                                this.myData=[];
                            }else{
                                this.myData.splice(num,1);
                            }
                        }
    

     功能就做完了。但是,点击单个删除和全部删除时,提示内容需要改变。

     data:{
                        myData:[],
                        username:"",
                        age:'',
                        nowIndex:"-200",
                        msg:"你确定要删除么?"
                    },
    <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer" @click="nowIndex=$index,msg='你确定要删除么?'">删除</button>
    <button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#layer" @click="nowIndex=-2,msg='你确定要全部删除么?'">删除全部</button>
    <h4 class="modal-title">{{msg}}</h4>
    

      这样,我们这个功能就做完了。

    点击演示地址查看

  • 相关阅读:
    CSS:命名规范心得分享
    css中用一张背景图做页面的技术有什么优势?
    ie8 css hack
    简单介绍几个CSSReset的方法
    牛人也得看的CSS常识
    DIV+CSS网页布局常用的一些基础知识整理
    font-size:100%有什么作用?
    为什么无法定义1px左右高度的容器
    Div+CSS常见错误总结
    从数字千分位处理认识(?<=)、(?=)、(?:)
  • 原文地址:https://www.cnblogs.com/d-12315/p/6709819.html
Copyright © 2011-2022 走看看