基于vue2.0动态组件及render详解


Posted in Javascript onMarch 17, 2018

如下所示:

<template>
 <div class="hello">
 <h1>{{ msg }}</h1>
 <h2>这里是Boor</h2>
 <component v-bind:my-data="items" v-bind:is="currentView">
  <!-- 组件在 vm.currentview 变化时改变! -->
 </component>
 <a class="explain">直直</a>
 <button v-on:click="addData">点击</button>
 </div>
</template>
<script>
 //import $ from '@/assets/scripts/lib/zepto.min'
 //console.log($);
 //import Vue from 'vue'
 function isEmptyObject(e) {
 var t;
 for (t in e)
  return !1;
 return !0
 }
 function objectLength(o) {
  var len = 0;
  for(var p in o) {
   len++;
  }
  return len;
 }
 let data ={
  c_0:{c:1},
  c_1:{c:2},
  c_2:{c:3},
  c_3:{c:4}
 };
 let num = 0;
 //console.log(objectLength(data));
 const MyComponent = {
 //template: '<h3 v-for="item in items">{{ item.c}}</h3>',
 props: ['myData'],
 data(){
  return{
  //items : myData
  }
 },
 render: function (createElement) {
  debugger;
  let items = this.myData;
   //items = JSON.stringify(items);
  let num = objectLength(items);
 if (!isEmptyObject(items)) {
  debugger;
  return createElement('div', Array.apply(null, { length: num }).map(function (v,index) {
  return createElement('h3', items['c_'+index]['c'].toString())
  }))
 } else {
  return createElement('h1', '没有数据!');
 }
 }
 };
 // 注册
 //Vue.component('my-component', MyComponent);
export default {
 name: 'bar',
 data () {
 return {
  msg: 'Bar',
  fuck: 'Hello',
  items: data,
  currentView: MyComponent
 }
 },
 methods:{
 addData : function(){
  for(let p in data) {
   if(p == 'c_'+num) {
    data[p] = {'c': num };
   } else {
    data['c'+num] = {'c': num };
   }
  }
  num++;
 }
 }
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
 font-weight: normal;
}
ul {
 list-style-type: none;
 padding: 0;
}
li {
 display: inline-block;
 margin: 0 10px;
}
a {
 color: #42b983;
}
</style>

以上这篇基于vue2.0动态组件及render详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(6)
Dec 23 Javascript
javascript之querySelector和querySelectorAll使用介绍
Dec 20 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
Javascript中神奇的this
Jan 20 Javascript
使用Curl命令查看请求响应时间方法
Nov 04 Javascript
超全面的javascript中变量命名规则
Feb 09 Javascript
JavaScript正则替换HTML标签功能示例
Mar 02 Javascript
Vuex模块化实现待办事项的状态管理
Mar 15 Javascript
js实现黑白div块画空心的图形
Dec 13 Javascript
javascript设计模式之迭代器模式
Jan 30 Javascript
Node.js API详解之 repl模块用法实例分析
May 25 Javascript
vue3种table表格选项个数的控制方法
Apr 14 Vue.js
Vue实现动态创建和删除数据的方法
Mar 17 #Javascript
JS实现将链接生成二维码并转为图片的方法
Mar 17 #Javascript
基于vue1和vue2获取dom元素的方法
Mar 17 #Javascript
解决vue页面DOM操作不生效的问题
Mar 17 #Javascript
vue中实现先请求数据再渲染dom分享
Mar 17 #Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
Mar 17 #Javascript
vue获取当前激活路由的方法
Mar 17 #Javascript
You might like
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
python变量命名的7条建议
2019/07/04 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
Python实现验证码识别
2020/06/15 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
房地产广告词大全
2014/03/19 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
springcloud整合seata
2022/05/20 Java/Android