</!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<script src="./lib/vue-2.4.0.js"></script>
<style>
</style>
</head>
<body>
<!-- 指令:指令与属性相似,是对指定元素样式或行为的赋予。可以有效的管理元素。-->
<!-- 在页面中自定义的全局指令,可以为每一个 vm 对象中的元素提供服务,只要 vm 中的标签引用了全局指令那么一定会即时生效,一般情况下我们普遍做的都是自定义全局指令来管理元素。 -->
<!-- 值得一提的是自定义指令需要经常搭配 vuejs 中的钩子函数来进行操作。在我们学习完指令之后,将在下一个章节(对象的生命周期)对钩子函数进行详细的学习。 -->
<!-- 自定义全局指令:Vue.directive() -->
<!-- 案例:自定义一个全局指令让文本框自动获取焦点 -->
<!-- 我们也可以通过参数为指令进行赋值 -->
<!--bind:用来操作元素样式
inserted:用来操作元素行为
updated: -->
<div id="app">
<!-- 如果不添加单引号,会在vm中的data中找green变量,所以要添加单引号 -->
<!-- 测试自定义指令:<input type="" v-dt1="'orange'"/> -->
<div v-dt1="'red'">-1</div>
<div v-dt1="'green'">1</div>
<!-- 使用私有指令和全局指令是一样的,都是以V-指令形式来写 -->
<p v-mydt>显示信息</p>
</div>
<!-- -->
<script>
//自定义全局指令
/*
参数1:指令名称,在定义的时候前面不需要添加“v-”前缀,但是在使用的过程中一定要添加“v-”前缀
参数2:json对象,在这个对象身上,有一些指令相关的函数,这些函数可以在特定的阶段,执行相关的操作(钩子函数)
*/
Vue.directive("dt1",{
//以下定义了3个函数,这3个函数是与vuejs对象生命周期密切相关的函数,在每个函数中,第一个参数el表示element,表示指令操作的元素;el对象同时也是一个原生的js对象(dom对象)
//每当指令绑定到改元素上的时候,会立即执行这个bind函数。该函数只执行一次
/*
参数1:需要操作的元素element
参数2:是在元素使用指令的时候,为函数传递的一个具体的值,该函数来接收该值,通过赋值的形式为元素来进行操作
*/
bind:function(el,binding){
//将指定文本的信息改变颜色
// el.style.color="red";
//为本狂中的信息会随着传递值的变化而变化
el.style.color=binding.value;
//在页面加载完毕后,指定文本框自动获取焦点
//方法一:无效;因为在元素绑定了指令的时候,还没有插入到dom中去,这时候调用focus方法一定是没有作用的一个元素,只有插入dom之后,才能触发dom相关的方法
// el.focus();
},
//表示在元素插入到dom的时候,会执行该函数,该函数只会执行一次
inserted:function(el){
el.focus();
},
//当vue.js中的元素更新的时候,会触发该函数,元素是可以随时进行更新的,所以该函数也可以触发多次
updated:function(el){
//对于当前指令相关的测试,该函数暂时用不到
}
})
var vm=new Vue({
el : "#app",
data:{
"str1":"aaa",
"currentTime":new Date(),
"fruitList":[
{"id":"A0001","name":"苹果","price":10},
{"id":"A0002","name":"菠萝","price":15},
{"id":"A0003","name":"桃子","price":8},
]
},
methods:{
},
filters:{
filter3:function(value){
return value+"bbb";
}
},
directives:{
"mydt":{
bind:function(el){
el.style.color="red";
}
}
},
})
</script>
</body>
</html>