自定义全局键盘修饰符
1.通过Vue.config.keyCodes.名称=按键值来自定义案件修饰符的别名:
Vue.config.keyCodes.f2 = 113;
1.使用自定义的按键修饰符:
<label>
Name:
<input type="text" class="form-control" v-model="name" @keyup.f2="add">
</label>
自定义指令
1.使用Vue.directive()定义全局的指令
自定义全局指令v-focus,为绑定的元素自动获取焦点
//使用 Vue.directive()定义全局的指令
// 其中参数1:指令的名称,注意:在定义的时候,指令的名称前面,不需要加 v- 前缀
// 但是,在调用的时候,必须在指令名称前加上v-前缀来进行调用
// 参数2:是一个对象,这一个对象身上,有一些指令相关的函数,这些函数可以在特定的阶段,执行相关的操作
Vue.directive('focus', {
bind: function (el) { //每当指令绑定到元素上的时候,会立即执行这个 bind 函数,只执行一次
//注意:在每个函数中,第一个参数,永远是el ,表示被绑定了指令的那个元素,这个el 参数,是一个原生的JS对象
//在元素,刚绑定了指令的时候,还没有插入 DOM中去,这时候,调用focus方法没有作用
// 因为,一个元素,只有插入 DOM之后,才能获取焦点
// el.focus()
},
inserted: function (el) { //inserted 表示元素 插入到DOM中的时候,会执行 inserted 函数【触发一次】
el.focus()
// 和JS行为有关的操作,最好在 inserted 中执行,防止JS行为不生效
},
updated: function () { //当 VNode更新的时候,会执行 updated ,可能会触发多次
}
})
1.自定义指令使用方法
<label>
<!-- Vue中所有的指令,在调用时都以v-开头 -->
搜索名称关键字:
<input type="text" class="form-control" v-model="keywords" id="search" v-focus v-color="'blue'">
</label>
2.自定义局部指令v-fontsize和v-fontweight ,为绑定的元素设置字体大小和字体粗细
directives:{ //自定义私有指令
'fontsize':function(el,binding){ //注意:这个 function 等同于 把 代码
// 写到了 bind 和 update 中去
el.style.fontSize=parseInt(binding.value) + 'px'
},
'fontweight':{//设置字体粗细
bind:function(el,binding){
el.style.fontWeight=binding.value
}
}
}
2.自定义指令使用方法
<h3 v-color="'pink'" v-fontweight="900" v-fontsize="50">{{ dt | dateFormat }}</h3>
Vue实例的生命周期
什么是生命周期:从Vue创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期!
主要的生命周期函数分类:
- 创建期间的生命周期函数
(1) beforeCreate(创建前): 在数据观测和初始化事件还未开始
(2) created(创建后): 完成数据观测,属性和方法的运算,初始化事件,$el 属性还没有显示出来
(3) beforeMount(载入前): 在挂载开始之前被调用,相关的 render 函数首次被调用。实例已完成以下的配置:编译模板,把 data 里面的数据和模板生成 html。此时还没有挂载 html 到 页面上。
(4) mounted(载入后): 在 el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用。实例已完成以下的配置:用上面编译好的 html 内容替换 el 属性指向的 DOM 对象。完成模板中的 html 渲染到 html 页面中。此过程中进行 ajax 交互。
- 运行期间的生命周期函数:
(5) beforeUpdate(更新前) 在数据更新之前调用,发生在虚拟 DOM 重新渲染和打补丁之前。 可以在该钩子中进一步地更改状态,不会触发附加的重渲染过程。
(6) updated(更新后) :实例更新完毕之后调用此函数,此时data中的状态值和界面上显示的数据,都已经完成了更新,界面已经被渲染好了
- 销毁期间的生命周期函数:
(7) beforeDestroy(销毁前) 在实例销毁之前调用。实例仍然完全可用。
(8) destroyed(销毁后) 在实例销毁之后调用。调用后,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用。
vue-resource实现get,post请求
node自行配置环境, app.js中需要执行跨域请求
//app.js
var cors = require('koa-cors');
app.use(cors());
JS代码 http://localhost:3000/tag 跨域请求
methods: {
getInfo() {//发起get请求
// 当发起get 请求之后,通过 .then 来设置成功的回调函数
this.$http.get('http://localhost:3000/tag').then(function (result) {
// 通过result.body 拿到服务器返回的成功的数据
console.log(result);
})
},
postInfo() {//发起post请求 application/x-www-form-urlencoded
// 手动发起的post请求,默认没有表单格式,所以,有的服务器处理不了
// 通过post 方法的第三个参数,设置 提交的内容类型 为 普通表单数据格式
this.$http.post('http://localhost:3000/tag', {}, { emulateJSON:true})
.then(function (result) {
// 通过result.body 拿到服务器返回的成功的数据
console.log(result);
})
}
}
调用方法
<input type="button" value="get请求" @click="getInfo">
<input type="button" value="post请求" @click="postInfo">