最近看了看vue,写写心得笔记。
vue的雏形 todolist形式css
为了让表现形式好看一点,此次选用bootstrap:
一、引入bootstrap.min.css主要是让页面样式好看,直接调用bootstrap里面封装好的类
二、引入bootstrap依赖jq类库,因此须要引入jquery-1.11.0.min.js。
三、bootstrap.js主要是调用封装好的模态框还有弹窗等组件
四、最后引入这个mvvm框架-vue.jsvue
<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经常使用的类:jquery
-------------------用到的样式---------------------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"> 关闭按钮符号`×` data-toggle="modal" data-target="#layer" 开关
------------------vue用到的指令--------------------app
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 })
数组中删除:mvvm
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>×</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>