认识Vue.js的组件和模板


声明:本文转载自https://my.oschina.net/sichunchen/blog/1553939,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

Vue的内置指令

1. v-bind

v-bind主要用于绑定DOM元素属性(attribute),

即元素属性实际的值是有vm实例中的data属性提供的。

例如:

<!doctype html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Vue的指令</title>     <script src="../vue.js"></script> </head> <body> <!-- HTML模版 --> <div id="demo">     <span v-bind:cutomId="id">{{message}}</span> </div> <script>     //数据     let obj ={         message:"Hello World",         id:'123'     };   //声明式渲染     var vm = new Vue({         el:'#demo',         data:obj    }); </script> </body> </html>

v-bind可以简写为“:”,

上述例子可以简写为<span :cotomId="id">

实现效果如下:

 

2. v-on

绑定事件监听器,简写为@。

昨天我们也用过,我们简写一下看一下效果

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Vue的指令</title>     <script src="../vue.js"></script> </head> <body>     <!-- HTML模版 -->     <div id="demo">         <span @click="clickHandle">{{message}}</span>     </div>     <script>         //数据         let obj = {             message:"hello Vue"         };         //声明式渲染         var vm = new Vue({             el:"#demo",             data:obj,             methods:{                 clickHandle(){                         alert("click")                         }             }         });     </script> </body> </html>

效果如下:

3.v-html

v-html,参数类型为string,

作用为更新innerHTML,

接受的字符串不会进行编译等操作,

按普通HTML处理

代码如下

 

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Vue的指令</title>     <script src="../vue.js"></script> </head> <body> <!-- HTML模版 --> <div id="demo" v-html="HTML"></div> <script>     //数据     let obj = {         HTML:"<div>Hello World</div>"     };     var vm = new Vue({         el:"#demo",         data:obj    }) </script> </body> </html>

实现效果如下

更多内置指令请查询官网:Vue.js指令

模板

html模板

        基于DOM的模板,模板都是可解析有效的html

插值

文本:使用“Mustache”语法(双大括号){{value}}

    作用:替换实例上的属性值,

    当值改变时,插值内容就会自动更新

原生的html:双大括号输出的是文本,不会解析html

属性:使用v-bind进行绑定,可以响应变化

使用JavaScript表达式:可以写简单的表达式

字符串模板

template字符串

        template选项对象的属性

        模板将会替换挂在元素。挂在元素的内容都将被忽略。

代码如下

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>template模板</title>     <script src="../vue.js"></script> </head> <body>     <!--HTML模板-->     <div id="demo"></div>     <script>         //数据         let obj = {             html:"<div>String</div>",             abc:1         };         var str = "<div>Hello</div>";         var vm = new Vue({             el:"#demo",             data:obj,             template:str        })     </script> </body> </html>

有木有发现什么惊奇的变化

 

        根节点只能有一个

        将html结构写在一对script标签中,设置type="X-template"

 

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>template模板</title>     <script src="../vue.js"></script> </head> <body>     <!--HTML模板-->     <div id="demo">         <span>vue</span>     </div>     <script type="x-template" id="temp">         <div>             Hello,{{abc}},             <span>sunday</span>         </div>     </script>     <script>         //数据         let obj = {             html:"<div>String</div>",             abc:1         };         var vm = new Vue({             el:"#demo",             data:obj,             template:"#temp"         });     </script> </body> </html>

实现效果如下:

 

写在script标签中,还是比较局限,

如果别的文件也是这个结构的时候,

这个就不能重复使用。

模板render函数

render函数

  render 选项对象的属性

  createElement(标签名,{数据对象},[子元素]);

  子元素为文本或者数组

我们还是来一段代码演示

 

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>render函数</title>     <script src="../vue.js"></script>     <style type="text/css">         .bg{             background: #ee0000;         }     </style> </head> <body>     <div id="demo"></div>     <script>         //数据         let obj = {                      };         var vm = new Vue({             el:"#demo",             data:obj,             render(createElement){                 return createElement(                     //元素名                     "ul",                     //数据对象                     {                         class:{                             bg:true                         }                      },                     //子元素                     [                         createElement("li",1),                         createElement("li",2),                         createElement("li",3)                     ]                 );             }         })     </script> </body> </html>

实现效果如下

 

关于数据对象属性,讲情请参考官网的例子。

Vue.js官网

 

 

 

 

 

本文发表于2017年10月20日 18:34
(c)注:本文转载自https://my.oschina.net/sichunchen/blog/1553939,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2553 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

万稳万当,不如一默。任何一句话,你不说出来便是那句话的主人,你说了出来,便是那句话的奴隶。

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1