1

最近看了看vue,写写心得笔记。
vue的雏形 todolist形式

clipboard.png

为了让表现形式好看一点,这次选用bootstrap:
1、引入bootstrap.min.css主要是让页面样式好看,直接调用bootstrap里面封装好的类
2、引入bootstrap依赖jq类库,所以需要引入jquery-1.11.0.min.js。
3、bootstrap.js主要是调用封装好的模态框还有弹窗等组件
4、最后引入这个mvvm框架-vue.js

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

在写之前先介绍一下bootstrap常用的类:

-------------------用到的样式---------------------

container:两边留白非全屏,固定宽度并支持响应式布局的容器
form-group:把表单和标签放在一个类厘米获取最佳间距
form-control:向所有的文本元素 <input>、<textarea> 和 <select> 添加这个类
table-bordered: 为所有表格的单元格添加边框
table: 为任意 <table> 添加基本样式 (只有横向分隔线)
table-hover: 在 <tbody> 内的任一行启用鼠标悬停状态
text-center:居中对齐文本
btn: 为按钮添加基本样式
btn-primary: 原始按钮样式(未被操作)
btn-sm:制作一个小按钮

-------------------用到的组件---------------------

modal:黑色遮罩
fade:动画形式
modal-dialog:这个是对话框,对话框里面放内容
modal-content:这个是对话框内容一般有三块:modal-header、modal-body、modal-footer
modal-header
close:点击关闭按钮 data-dismiss="modal">   关闭按钮符号`&times;`
data-toggle="modal" data-target="#layer" 开关

------------------vue用到的指令--------------------

v-model="usename" 双向绑定
v-for="item in myData" 遍历数组
v-on:click="add()" 点击事件
v-show="myData.length==0" 判断数组长度等于0显示的条件
数组添加:

this.myData.push({
                    name: this.usename,
                    age: this.useage
                 })

数组中删除:

this.myData.splice(n, 1);

创建一个 Vue 实例或 "ViewModel",它连接 View 与 Model

new Vue({
            el: '#app',//说白了是作用范围
            data: exampleData//结构中用到的参数
            methods: {//这里面写方法
                    add: function () {}
                    }
        })

分析:

通过bootstrap把结构搭建完了,建立一个空数组mydata,在呈现的结构中循环遍历v-for="item in myData";呈现数据用{{item}}
通过v-show="mydata.length==0"判断数据为空时候显示隐藏;
在输入框中通过v-model进行数据双向绑定;
通过v-on:click=“add()”绑定添加方法,将数据push到mydata里面,同理删除mydata数据用splice;
删除当前是通过下标$index 例如:v-on:click="noIndex=$index"

<div class="container" id="box">
    <form role=form>
        <div class="form-group">
            <label for="username">用户名:</label>
            <input type="text" placeholder="请输入用户名" id="usename" class="form-control" v-model="usename">
        </div>
        <div class="form-group">
            <label for="username">年龄:</label>
            <input type="text" placeholder="请输入年龄" id="useage" class="form-control" v-model="useage">
        </div>
        <div class="form-group">
            <input class="btn btn-primary" type="button" value="添加" v-on:click="add()"/>
            <input class="btn btn-danger" value="重置" type="reset">
        </div>
    </form>
    <table class="table-bordered table table-hover text-center">
        <caption>用户信息表</caption>
        <tr>
            <th class="text-center">序号</th>
            <th class="text-center">用户名</th>
            <th class="text-center">年龄</th>
            <th class="text-center">操作</th>
        </tr>
        <tr 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"
                        v-on:click="noIndex=$index">删除
                </button>
            </td>
        </tr>
        <tr class="text-right" v-show="myData.length!=0">
            <td colspan="4">
                <button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#layer" v-on:click="noIndex=-2">
                    全部删除
                </button>
            </td>
        </tr>
        <tr v-show="myData.length==0">
            <td colspan="4"><p class="h5 text-info">暂无消息...</p></td>
        </tr>
    </table>
    <!--弹出框-->
    <div role="dialog" class="modal fade" id="layer">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <div class="close" data-dismiss="modal"><span>&times;</span></div>
                    <div class="modal-title">确认要删除么?</div>
                </div>
                <div class="modal-footer">
                    <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer"
                            v-on:click="del(noIndex)">确认
                    </button>
                    <button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#layer">删除</button>
                </div>
            </div>
        </div>
    </div>
</div>

开始写vue:

 <script>
        window.onload = function () {
            var vm = new Vue({
                el: "#box",
                data: {
                    myData: [],
                    usename: '',
                    useage: '',
                    noIndex: -100
                },
                methods: {
                    add: function () {
                        this.myData.push({
                            name: this.usename,
                            age: this.useage
                        })
                        this.usename = '';
                        this.useage = '';
                    },
                    del: function (n) {
                        if (n == -2) {
                            this.myData = [];
                        } else {
                            this.myData.splice(n, 1);
                        }

                    }
                }
            })
        }
    </script>

雨后
45 声望20 粉丝

蔡蔡菜菜


下一篇 »
vue第二天