01 - Vue的基本模板和基本控件

一. 简介

vue 是一套用于构建用户见面的渐进式框架
特点:
(1) 简洁 (2)轻量 (3)组件化 (4)快速

二. 基本模板

html代码:

<body>
<div id="app">
//可以直接获取到实例化data中的数据
{{msg}}
</div>
</body>

vue代码:

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var vm= new Vue({
	el:"#app",
	data:{
	  message:"hello Vue!"
	}
})
</script>

三.基本控件

3.1 v-bind

用于绑定属性的指令
可以简写成 ( :属性名

html代码:

<div id="app">
	<!-- message变量绑定在title属性上   Mytitle绑定在自定义data-tit属性上 -->
    <span v-bind:title="message" v-bind:data-tit="Mytitle" >
		停留几秒就可以知道你停留的时间了啊
    </span>
</div>    

vue代码:

var vm= new Vue({
		el:"#app",
		data:{
		message:"我停留"+new Date().toDateString(),
		Mytitle:"新标题"		
	}
})

3.2 v-on

用于绑定事件的指令
( 缩写 @事件='属性名' )

html代码:

<div id="app">
	<p>{{message}}</p>
	<input type="button" @click="returnShow" value="反转信息" />
</div>

vue代码:

var vm =new Vue({
		el:"#app",
		data:{
			message:"hello,vue"
		},
		//methods属性定义了vue实例所有可用的方法
		methods:{ 
			returnShow:function(){
			this.message=this.message.split('').reverse().join('')
		}
	}
})

3.3 v-if , v-show

v-if v-show
相同点 都是用于控制切换一个元素是否显示的指令
不同点 直接把标签删除 不推荐使用 在标签中添加 "display: none" 样式

html代码:

<div id="app">
  <p v-if="seen">  <!-- 如果seen为flase 则删除标签 -->
		你好
  </p>
  <p v-show="show">    <!-- 如果show为false 则在标签添加display: none属性 -->
		不好
  </p>
</div>

vue代码:

var vm=new Vue({
      el:"#app",
      data:{
	seen:true, 
	show:false
	}
})

3.4 v-for

用于绑定数组的数据来渲染整个项目列表的指令

html代码:

<div id="app">
	<p v-for="(item,i) in items ">元素{{item}} , 索引{{i}}</p>
	<!-- 注意:in 后面可以接 普通数组 对象数组 对象 数字  迭代数字的话count从1开始-->
	<p v-for="count in 5">第 {{count}} 次了</p>
</div>

vue代码:

var vm=new Vue({
	el:"#app",
	data:{
		items:[1,2,3,4,5]
	}
})

3.5 v-model, v-text,v-html

内容 注意点
v-model 用于 实现表单元素和Model中数据的双向数据绑定 的指令 v-model只用用于表单元素 input select checkbox textarae
v-text 用于只能显示Vue对象传递过来的数据 的指令
v-hmtl 用于 可以向html页面插入标签 的指令
html代码: ```javascript

hello,vue!

``` vue代码: ```javascript var vm=new Vue({ el:"#app", data:{ msg1:"hello,vue", msg2:'

hello,vue

', msg3:'你好,vue!' } }) ``` ### 3.6 自定义指令
<input id="search" class="input-medium search-query" type="text" placeholder="自定义指令" v-focus v-color="'green'" />

3.6.1 自定义全局指令

directive() 通过Vue.directive() 可以自定义全局指令 其中有两个参数:
名称 内容
参数1 指令名称 在定义指令时 指令前面 不需要加v-前缀 而在调用的时候 指令前面要加上v-前缀进行调用
参数2 对象 有一些指令相关的函数 这些函数可以在特定的阶段,执行相关的操作
Vue.directive('focus',{
	// 在每个函数中,第一个参数永远是el 表示被绑定了指令的那个元素  这个el元素就是一个dom对象
	//bind:  指令第一次绑定到元素时调用  只执行一次
	bind:function(el) {},  
	//元素只有插入DOM之后 才能获取焦点
	//和js行为有关的操作 放在inserted中 防止js行为不生效
	//inserted:  表示元素插入到DOM中 执行的函数  只执行一次
	inserted:function(el) {},
	//update:  当VNode更新时调用 可能会多次触发
	update:function(el) {}
})

3.6.2 自定义全局样式指令

 定义样式指令 可以通过自己定义css样式,来改变css样式
Vue.directive('color',{
	//设置样式指令 只需要通过指令绑定元素  不管有没有插入到页面上面 这个元素肯定有一个内联样式
	//和js样式相关的操作,放在bind
	//第二个参数 binding  
	     //name,
        //value -计算后的值,
	    //expression-字符串形式的指令表达式
	bind:function(el,binding){
	    //直接定义v-color 指令的样式
		// el.style.color='red'
		// console.log(binding.name)
		// console.log(binding.value)
		// console.log(binding.expression)
		el.style.color=binding.value
	}
})

3.6.3 自定义私有指令

定义私有指令,只对该实例有效

html代码:

<div id="app"></div>
<div id="app2">
	<p v-color="'red'" >hell,私有指令!</p>
</div>

vue代码:

var vm =new Vue({
	el:'#app',
	data:{},
	methods:{}
})
var vm2=new Vue({
	el:'#app2',
	data:{}
	directive:{
	'color':{
		bind:function(el,binding){
		   el.style.color=binding.value
			}
		}
	}
})
posted @ 2019-12-09 14:51  okoka  阅读(404)  评论(0)    收藏  举报