Vue.js——v-指令详解,component组件
2017-09-27 09:06
1066 查看
其实,2016年至今,Vue发展逐渐占据主体,其“vue”为法语名,实则中文名为“view”,它主要是基于“MVVM”进行设计并开发的。
M——Model 模型,用于数据保存
V——View 视图,用于用户界面设置
VM——ViewModel 视图模型,用于实现双向绑定
即view的变化,自动反映在了viewModel上边,反之亦然。
1、文本
(1)数据插值{{ message }}
(2)html v-html用于输出html代码
注意,若设置html属性中的值应使用v-bind指令。
(3)指令
对于指令,多采用“v-”作为前缀进行设置,用于设置当表达式值改变时,将某些行为应用到DOM上。
由于v-show可以实现与v-if相同的效果,即以下面的一个案例进行显示。
当前代码若在控制台console中,点击F12键审查元素,会发现,
(1)若是“v-show”指令,当我们在“textarea”中进行输入元素,其相邻元素div会出现“<div style="display:none">”,即表示相邻元素div依然存在。
(2)若改为“v-if”指令,相对应的“div style="display:none">”会随即消失。
2、事件处理event
注意:“v-on:”等价于“@”
上述代码运行后,初始化为“submit0”,每当点击一下按钮,submit0都会++,
在该实例中,用的“@”代替了“v-on:”,在该实例中,显示的event事件为“onClick()”,由于代替了“v-on:”,所以直接写为“@Click”。
3、组件化component
结合template模板,实现代码重用功能,
<counter></counter>
<script>
Vue.component('compoonent',template:{'<h1>Hello world!</h1>'});
</script>
等价于“<counter>
<h1>Hello world!</h1>
</counter>”
为什么采用组件化component呢,目的是为了实现代码重用操作。
案例:点赞喜欢Links or 不喜欢Dislikes
M——Model 模型,用于数据保存
V——View 视图,用于用户界面设置
VM——ViewModel 视图模型,用于实现双向绑定
即view的变化,自动反映在了viewModel上边,反之亦然。
1、文本
(1)数据插值{{ message }}
<div id="app"> <p>{{ message }}</p> </div>
(2)html v-html用于输出html代码
<div id="app"> <div v-html="message"></div> </div> <script> new Vue({ el: '#app', //el用于绑定某一数据,即id为“app”的元素 data: { message: '<h1>菜鸟教程</h1>' } }) </script>
注意,若设置html属性中的值应使用v-bind指令。
<div id="app"> <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1"> <br><br> <div v-bind:class="{'class1':class1}"> directiva v-bind:class </div> </div> <script> new Vue({ el:'#app', data:{ class1:true } }); </script>
(3)指令
对于指令,多采用“v-”作为前缀进行设置,用于设置当表达式值改变时,将某些行为应用到DOM上。
<div id="app"> <p v-if="seen">现在你看到我了</p> </div> <script> new Vue({ el:'#app', data:{ seeb:true } }); </script>上述代码中,v-if指令将表达式seen的值true或false来判断是否插入p元素。
由于v-show可以实现与v-if相同的效果,即以下面的一个案例进行显示。
<div id="app"> <form> <div class="error" v-show="!message"> You must enter a message to submit </div> <textarea v-model="message"></textarea> <button v-show="message">send message</button> </form> <pre>{{ $data|json }}</pre> </div> <script type="text/javascript" src="js/vue.min.js" ></script> <script> new Vue({ el:'#app', data:{ message:'' } }); </script>
当前代码若在控制台console中,点击F12键审查元素,会发现,
(1)若是“v-show”指令,当我们在“textarea”中进行输入元素,其相邻元素div会出现“<div style="display:none">”,即表示相邻元素div依然存在。
(2)若改为“v-if”指令,相对应的“div style="display:none">”会随即消失。
2、事件处理event
注意:“v-on:”等价于“@”
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>事件处理event</title> </head> <style> .... </style> <body> <div id="app"> <button type="button" @click="updateCount">Submit {{ count }} </button> </div> <script type="text/javascript" src="js/vue.min.js" ></script> <script> new Vue({ el:'#app', //绑定元素对象; data:{ //渲染数据; count:0 }, methods:{ //绑定的方法; updateCount:function(){ this.count ++; } } }); </script> </body> </html>
上述代码运行后,初始化为“submit0”,每当点击一下按钮,submit0都会++,
在该实例中,用的“@”代替了“v-on:”,在该实例中,显示的event事件为“onClick()”,由于代替了“v-on:”,所以直接写为“@Click”。
3、组件化component
结合template模板,实现代码重用功能,
<counter></counter>
<script>
Vue.component('compoonent',template:{'<h1>Hello world!</h1>'});
</script>
等价于“<counter>
<h1>Hello world!</h1>
</counter>”
为什么采用组件化component呢,目的是为了实现代码重用操作。
案例:点赞喜欢Links or 不喜欢Dislikes
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vuejs</title> </head> <body> <div id="app"> <!---自定义一个组件counter--> <counter heading="Likes" color="green"></counter> <counter heading="Dislikes" color="red"></counter> </div> <template id="counter-template"> <!--heading属性(props)用于设置counter属性绑定一个值--> <h1>{{ heading }}</h1> <button type="button" @click="count +=1">{{ count }}</button> </template> <script type="text/javascript" src="js/vue.min.js" ></script> <script> Vue.component('counter',{ template:'#counter-template', //属性heading props:['heading','color'], /*不能写为*/ /* data:{ :count:0 } */ data:function(){ return{count:0}; } }); new Vue({ el:'#app' }) </script> </body> </html>代码不知道哪里有错误,一直显示不出来内容,求解????
相关文章推荐
- 详解Vue.js――60分钟组件快速入门(上篇)
- vue从入门到进阶:组件Component详解(六)
- Vue.js路由组件vue-router使用方法详解
- vue.js树形组件详解,删除双击增加分支
- vue.js入门(3)――详解组件通信
- 详解vue.js全局组件和局部组件
- vue中component组件的props使用详解
- Vue.js 2.0学习教程之从基础到组件详解
- vue.js表格组件开发的实例详解
- Vuejs组件之slot内容分发实例详解
- vuejs-指令详解
- vuejs父子组件之间数据交互详解
- 详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
- Vue.js 2.x之组件的定义和注册图文详解
- vue.js 学习之组件之间数据传递详解
- Vue.js、vue安装步骤、单文件组件、模板指令
- vue.js如何将echarts封装为组件一键使用详解
- Vue.js中组件中的slot实例详解
- vue.js树形组件详解,删除双击增加分支
- Vue.js组件component关于分页功能、自定义事件的$.Emit()的使用