指令和模板_02章

2017-03-08  本文已影响0人  C_Y大渔

指令(是一种特殊的自定义行间属性)

1、指令的职责就是当其表达式的值改变时相应的将某些行为应用到DOM上,在vue中,指令以V-开头

html:

<div id="demo">

<span v-bind:customId="id"> {{message}}</span>   // 渲染

</div>

js:

let obj={

message:"hello,vue!",

id:"123"

}

var vm=new Vue({

el:"#demo",

data:obj

});

2、内置指令

v-on:绑定事件监听器,简写为“@”

v-bind:动态的绑定数据,简写为 “:”

详情查看API....

模板

1、html模板(基于DOM的模板,模板都是可解析的有效的HTML)

插值 

① 文本插值 {{value}}  —  替换实例上的属性值,当值发生改变时,插值内容处会自动更新;

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

html:

<div id="demo">

<div v-html='html'>{{}}</div>

<div>

js:

let  data={

html:"hello,Vue!"

}

new Vue({

el:"#demo",

data:data

})

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

④ 使用javascript表达式:写简单的表达式 如{{true?‘yes’:‘no’}}、{{1+2}}

2、字符串模板(template字符串)_推荐用这种

html:

<div id="demo">

<span>{{message}}</span>

</div>

js:

let  data={

message:"我们"

}

var str = '<div>hello,{{message }}</div>'  // 新的模板,只能有一个html标签,可以嵌套,不能并列

new Vue({

el:"#demo",

data:data,

template:str       // 权限更大一些,会把原来的模板内容替换掉

})

注意:只能有一个根节点 ;

          ES6语法中提供一个超级字符串的方式(`:功能键1旁边 )如:`<div>hello,{{message }}</div>`  这种方式可以换行

② 将html结构写在一对script标签中,设置type=“x-template”;

html:

<div id="demo">

<span>{{message}}</span>

</div>

<script  type="x-template" id="temp">

<div>hello</div>

</script>

js:

let  data={

message:"我们"

};

new Vue({

el:"#demo",

data:data,

template:"#temp"

});

注意:片段-复用性差

3、模块 - render 函数 (一般用在组件)

render选项对象的属性

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

style:

.bg{background: red;}

html:

<div id="demo"></div>

js:

let obj={}

var vm=new Vue({

el:"#demo",

data:obj,

render(createElement){

return  createElement(

     "ul", {    // :{ 对象 }

           class:{bg:true},   // 绑定 class    :{class名:true / false}    true显示  false 隐藏

          style:{fontSize:"50px"},   // 绑定样式

          attrs:{abc:"mi"},     // 添加行间属性

          domProps:{innerHTML:"<li>我是谁</li>"},   // DOM元素属性(权重高)

          on:{}         // 绑定事件

      },

      [          //子元素

          createElement("li",1),

          createElement("li",2),

          createElement("li",3)

     ]

);

}

});

上一篇下一篇

猜你喜欢

热点阅读