Vue.directive('focus',{
inserted:function(el){
//el 表示所绑定的元素
el.focus();
}
})
<input type="text" v-focus>
<div id="app">
<input type="text" v-color='msg'>
div>
<script src="js/vue.js">script>
<script>
//自定义带参数指令
Vue.directive('color',{
bind:function(el,binding){
//el:表示所绑定的元素
//binding:一个对象
el.style.backgroundColor = binding.value.color;
}
});
var vm = new Vue({
el:"#app",
data:{
msg:{
color:"red"
}
}
});
script>
var vm = new Vue({
el: "#app",
data: {
msg: {
color: "red"
}
},
// 局部指令
directives: {
color: {
bind: function (el, binding) {
el.style.backgroundColor = binding.value.color;
}
},
focus: {
inserted: function (el) {
el.focus();
}
}
}
});
表达式的计算逻辑可能会比较复杂,使用计算属性可以使模板内容更加简洁
<div id="app">
<div>{
{msg}}div>
<div>{
{msg.split('').reverse().join('')}}div>
<div>{
{reverseString}}div>
div>
<script src="js/vue.js">script>
<script>
var vm = new Vue({
el:'#app',
data:{
msg:'hello'
},
// 计算属性
computed:{
reverseString:function(){
return this.msg.split('').reverse().join('');
}
}
});
script>
数据一旦发生变化就通知侦听器所绑定的方法
//分别输入姓、名
//实时显示拼接出的全名
var vm = new Vue({
el: '#app',
data: {
firstName:'Jim',
lastName: 'Green',
fullName: 'Jim Green'
},
// 监听属性
watch:{
firstName:function(val){
this.fullName = val + ' '+ this.lastName;
},
lastName:function(val){
this.fullName = this.firstName + ' '+ val;
}
}
});
格式化数据,比如将字符串格式化为首字母大写,将日期格式化为指定格式等
例子:首字母大写
Vue.filter('upper',function(val){
// upper:自定义过滤器名称
// val:拿到的数据
return val.charAt(0).toUpperCase()+val.slice(1);
});
<div>{
{msg|upper}}div>
<div>{
{msg|upper|lower}}div>
<div v-bind:id='msg|upper'>div>
var vm = new Vue({
el: "#app",
data: {
msg: {
color: "red"
}
},
// 局部过滤器
filters:{
upper:function(val){
return val.charAt(0).toUpperCase()+val.slice(1);
}
}
});
// {
{date|format('yyyy-MM-dd')}}
Vue.filter('format', function (value, arg) {
//value就是过滤器传递过来的参数
if(arg=='yyyy-MM-dd'){
var res = '';
res += value.getFullYear()+'-'+(value.getMonth()+1)+'-'+value.getDate();
return res;
}
});
<div>{
{date|format('yyyy-MM-dd')}}div>
生命周期图示