最近看了看vue,写写心得笔记。
vue的雏形 todolist形式
为了让表现形式好看一点,这次选用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"> 关闭按钮符号`×`
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>×</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>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。