Vue学习笔记十一
来源:互联网 发布:软件辅助工作室 编辑:程序博客网 时间:2024/06/05 09:35
Render函数
正常注册组件,注意这里的顺序,需要先全局注册,再实例化。
<div id="app"> <anchored-heading :level="1">Hello world!</anchored-heading></div><script type="text/x-template" id="anchored-heading-template"><h1 v-if="level === 1"> <slot></slot></h1><h2 v-else-if="level === 2"> <slot></slot></h2><h3 v-else-if="level === 3"> <slot></slot></h3><h4 v-else-if="level === 4"> <slot></slot></h4><h5 v-else-if="level === 5"> <slot></slot></h5><h6 v-else-if="level === 6"> <slot></slot></h6></script><script type="text/javascript">Vue.component('anchored-heading', { template: '#anchored-heading-template', props: { level: { type: Number, required: true } }})var app = new Vue({ el: "#app", data: { show:true }})</script>
render重写
<div id="app"> <anchored-heading :level="1">Hello world!</anchored-heading> </div> <script type="text/javascript"> Vue.component('anchored-heading',{ render: function(createElement){ return createElement( 'h' + this.level, //tag name标签名称 this.$slots.default //子组件的阵列,可以简单理解为anchored-heading中的内容 ) }, props: { level: { type: Number, required: true } } }) var app = new Vue({ el: "#app", data: { show:true } }) </script>
render中的createElement
<div id="app"> <anchored-heading :level="2">Hello world!</anchored-heading></div><script type="text/javascript">Vue.component('anchored-heading',{ render: function(createElement){ var nameId = this.level return createElement( 'h' + this.level, //tag name标签名称 [ createElement('a', { attrs: { href: 'https://www.baidu.com', name: '#'+nameId, } },this.$slots.default) ] ) }, props: { level: { type: Number, required: true } }})var app = new Vue({ el: "#app", data: { show:true }})</script>
render创建重复组件
render: function(createElement){ return createElement('div', Array.apply(null, {length:10}).map(function(vale){ return createElement('p','10个段落') }) )},
render代替模板语法v-if与v-for
模板写法
<div id="app"> <ul v-if="items.length"> <li v-for="item in items">{{item.name}}</li> </ul> <p v-else>No item</p></div><script type="text/javascript">var app = new Vue({ el: "#app", data: { items: [ {name:"xiaoD"}, {name:"joe"} ] }})</script>
render写法
<div id="app"> <my-component v-bind:items="items">No item</my-component></div><script type="text/javascript">Vue.component('my-component',{ props:['items'], render: function(creatElement){ if(this.items.length){ return creatElement('ul',this.items.map(function(item){ return creatElement('li',item.name) })) }else{ return creatElement('p',this.$slots.default) } }})var app = new Vue({ el: "#app", data: { items: [ {name:"xiaoD"}, {name:"joe"} ] }})</script>
阅读全文
0 0
- Vue学习笔记十一
- vue学习笔记:vue-router
- Allegro学习笔记十一
- C#学习笔记(十一)
- 学习笔记(十一)
- c++学习笔记十一
- OpenGL学习笔记(十一)
- Java学习笔记十一
- Django 学习笔记(十一)
- c++学习笔记十一
- CUDA学习笔记十一
- Linux 学习笔记 十一
- opencv_python学习笔记十一
- python_cookBook 学习笔记十一
- 【学习笔记十一】- JSON
- WinDbg学习笔记十一
- Vue.js学习笔记
- Vue.js 学习笔记
- 账户相关属性验证工具
- java求最大子序列
- android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明
- cron的使用
- elk监控tomcat日志
- Vue学习笔记十一
- java 生成二维码 log 标签
- vimの随时做运算
- Rxjava简单解析
- 个人小项目:现有12个小球和一个天平,小球中有一个重量与其它的不同,称重几次能将这个小球找出来
- 有效提升办公效率,word转pdf妙招
- 文字和图片水印
- 字符个数统计
- Day16-51.Array initialization