vue2.0+elementUI构建单页面后台管理平台: http://www.cnblogs.com/dmcl/p/6722315.html html
初学VUE2.0vue
(我的笔记,写完后发现好乱....下期使用markdown书写。)java
webstorm添加对VUE的支持 http://www.jianshu.com/p/142dae4f8b51web
推荐拓展:vue的chrome开发者工具vuejs-devtools 按F12可看chrome
https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpdapi
构造器数组
经过改造函数Vue 建立vue 的根实例markdown
var vm = new Vue({dom
//选项异步
})
能够用预约义选项 建立可复用的 组件构造器
vue MyComponent = vue.extend({
//扩展选项
})
var myComponentInstance = new MyComponent() //“MyComponent”的实例 类比java的“实现”
属性与方法
每一个vue实例都会 代理 其 data对象里的 属性
.
实例声明周期
new vue() → (beforeCreate)→observe Data观察数据→init events初始化时间→...
模板语法
{{msg}} 纯文本
{{}}支持完整的单个表达式 好比{{ message.split('').reverse().join('') }} {{ ok ? 'YES' : 'NO' }}
{{float_number | toInt}} 过滤器能够串联,能够接受参数
v-once 一次性改变,数据改变时不更新
v-html 插入Html (不能绑定数据) 【只能用放心的内容使用Html插值,毫不能用用户提供的内容进行插值 (太容易XSS攻击)】
指令
<a v-bind:href="url"></a>
<a v-on:click="doSomething">
<form v-on:submit.prevent="onSubmit"></form> 修饰器.prevent
,它其实表明的就是event.preventDefault()
缩写
1.v-bind 绑定已有属性
原:<a v-bind:href="url"></a> 缩写后: <a :href="url"> </a>
2.v-on 时间绑定
原:<a v-on:click ="dst"></a> 缩写后:<a @click="click"></a>
计算属性
效果:
当咱们在控制台修改msg时,vue知道msgInt依赖于msg,所以msg变化时msgInt也会变化,以下
计算属性区别于method ,前者依赖变化才更新,然后者每次执行都更新。
watch
计算属性在大多数时期使用,但有些状况更适合watch。好比异步操做或者昂贵操做
v-bind:title 绑定title
<div v-bind:class="{ active: isActive }"></div>
取决于isActive是true仍是false
三目 <div v-bind:class="[isActive ? activeClass : '', errorClass]">
也能够设置多个class 如v-bind:class="{ active: isActive, 'text-danger': hasError }"
也能够绑定对象
<div v-bind:class="classObject"></div>
v-bind:style 能够写样式对象,也能够写具体<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div> 而后data里写{activeColor:"red"}等具体信息
<div v-bind:style="styleObject"></div>
data: {
styleObject: {
color:
'red',
fontSize:
'13px'
}
}
|
多个样式对象 <div v-bind:style="[baseStyles, overridingStyles]">
v-if 判断是否显示
demo4.ok=false时 显示假
多行时考虑使用template
显示/隐藏能够添加过分效果 这里 fade是能够改的(对应样式)
style:
.fade-enter-active, .fade-leave-active {
transition: opacity .5s
}
.fade-enter, .fade-leave-active {
opacity: 0
}
v-show也能够根据显示元素,v-show的节点不移除,仅仅是display而已
v-for 循环遍历
效果:
demo5.games.push({name:"LOL"}) 能够添加数据
其中,能够增长第二参数 索引号
of 能够代替in 无差异
可在template使用
注意对象迭代的顺序是按照js的Object.keys() 无顺序 迭代的是对象内部的键值对。
整数迭代:<span v-for="n in 10">{{ n }}</span> 输出1到10
组件与 v-for
组件中的数据没法自动传入 由于组件有本身的做用域。松耦合 咱们用props传入数据到组件
v-for与组件的例子 可参考 http://cn.vuejs.org/v2/guide/list.html#组件-和-v-for
数组有变异方法(增删改等)和非变异方法(合并 切割等) 参考:http://cn.vuejs.org/v2/guide/list.html#变异方法
push()//在结尾增长一条或多条数据
pop()//删除最后一条数据
shift()//删除第一条数据,并返回这条数据
unshift()//在开始增长一条或多条数据,并返回数组长度
splice()//向/从数组中添加/删除项目,而后返回被删除的项目。
sort()//对数组的元素进行排序。
reverse()//颠倒数组中元素的顺序。
filter()//返回条件为真的数据
concat()//链接两个或多个数组
slice()//从已有的数组中返回选定的元素。
固然也能够用method方法
v-on 指令绑定一个监听事件
v-on:click 监听点击事件
<button v-on:click="counter += 1">增长 1</button>
data:{
counter:0
}
也能够接收一个定义的方法
还能够访问原生DOM事件 用$event 把它传入
<button v-on:click="warn('Form cannot be submitted yet.', $event)">Submit</button>
事件修饰符 .
备注:
按键修饰符
<input v-on:keyup.13="submit">
别名: <input v-on:keyup.enter="submit">
缩写: <input @keyup.enter="submit">
按键名: enter tab delete(删除/空格) esc space up down left right
能够经过全局 config.keyCodes
对象自定义按键修饰符别名: Vue.config.keyCodes.f1 = 112
这里有点诡异的就是,v-on:click=
后面跟的方法名若是带括号,就是js的表达式,若是不带括号,就是vue的方法名。
咱们在本章第一个例子中能够发现,v-on:click="greet"
没有传入任何参数,它就能够得到一个event的值,这个是vue内部提供的。
可是若是是后面跟括号的这种写法,若是不传若是event,那么是获取不到event对象的。用$event传入。
v-model 双向数据绑定,输入框变上面文字也变
输入完毕 试图再变化
<inputv-model.lazy="msg">
输入内容转数字
<inputv-model.number="age">
自动去空格
<inputv-model.trim="msg">
<table>
<tris="my-row"></tr>
</table>
子元素经过props接口与父元素有了很好的解耦合
eg.1
能够指定参数类型 String/Number/Boolean/Function/Object/Array
多个类型用数组 好比
props{
msg:[String,Number]
}
自定义事件
$on 监听事件 $emit触发事件
直接绑定原生js事件
<my-componentv-on:click.native="doTheThing"></my-component>
参数往下传 事件往上传
父组件
→ vm666.currentView='work' →