vue.js基于v-for实现批量渲染 Json数组对象列表数据示例


Posted in Javascript onAugust 03, 2019

本文实例讲述了vue.js基于v-for实现批量渲染 Json数组对象列表数据。分享给大家供大家参考,具体如下:

Vuejs的出现减轻了对DOM的直接操作,同时它提供的 v-for 渲染列表数据也给我们提供了很大的方便。即使是复杂的 Json数组对象,也可以使用 多层嵌套的 v-for 实现,格式如下:

<div v-for="(item,index) in items">
  <div v-for="(list,index) in item.lists"></div>
<div>

假设当前的HTML,VUE 文本格式如下:

<div id="app" class="columns">
  <div class="column">
    <div class="card">
      <div class="card-content">
        <div id="data" class="columns is-multiline ">
          <div class="column is-half">
            <div class="media">
              <div class="media-content">
                <p class="has-text-weight-bold">职业知识</p>
                <p class="help">生涯树提供的职业数据框架,可以从职业能力、知识、技能、活动、内容方面进行探索和规划</p>
              </div>
            </div>
            <div class="message-body">
              <div class="field buttons">
                <a>兴趣:</a>
                <span>常见的任务和环境的偏好</span>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

需要渲染的JSON数组对象格式如下:

var allData = [
  {
    "id":"职业知识",
    "name":"关于各行业职业信息的分析,主要因素分析",
    "lists":[
      {
        "title":"兴趣",
        "describe":"常见的任务和环境的偏好"
      },
      {
        "title":"价值观",
        "describe":"个人满意度的关键方面"
      },
      {
        "title":"技能",
        "describe":"学习发展、组织协作和资源管理的发达能力"
      }
    ]
  },
  {
    "id":"职业扩展",
    "name":"提供除本职业之外的扩展知识等各个方面",
    "lists":[
      {
        "title":"活动",
        "describe":"常见的工作行为类型"
      },
      {
        "title":"内容",
        "describe":"工作性质的物理和社会因素"
      },
      {
        "title":"能力",
        "describe":"个人基本持久属性"
      }
    ]
  }
];

使用VUE操作渲染列表,先对文本分配对应的字段值,格式如下:

<div class="column is-half" v-for="(item, index) in items">
  <div class="media">
    <div class="media-content">
      <p class="has-text-weight-bold">{{ item.id }}</p>
      <p class="help">{{ item.name }}</p>
    </div>
  </div>
  <div class="message-body" v-for="(list, index) in item.lists">
    <div class="field buttons" >
      <a>{{ list.title}}:</a>
      <span>{{ list.describe}}</span>
    </div>
  </div>
</div>

JS操作,引入 vuejs,创建实例渲染到指定对象(引入链接请移步到官网 https://cn.vuejs.org/)

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
var vm = new Vue({ el: '#app', data: { items:allData }})

VUE渲染列表数据完成,就是这么简单。接下来看看 原生JS 是如何渲染列表数据的:

原生JS操作数组取值:循环。使用 for in 直接操作对象,或者 for循环直接取值,格式如下:

for(var key in values){};for(var i=0;i<values.length;i++){},根据情况取任意一种方式,以为演示两种方式的使用

function Id(id) {
  return document.getElementById(id); //获取模块的ID
}
function getData(allData) {
  var data = Id("data");
  var html='';
  for(var i in allData){ //外层循环获取标志信息
    var list = '';
    for(var j=0;j<allData[i].lists.length;j++){ //内层循环渲染详细列表项
      list+='<div class="message-body">'+
          '<div class="field buttons">'+
            '<a class=" ">'+allData[i].lists[j].title+':</a>'+
            '<span>'+allData[i].lists[j].describe+'</span>'+
          '</div>'+
        '</div>';
    }
    html+='<div class="column is-half">'+
        '<div class="media">'+
          '<div class="media-content">'+
          '<p class="has-text-weight-bold">'+allData[i].id+'</p>'+
          '<p class="help">'+allData[i].name+'</p>'+
          '</div>'+
        '</div>'+list+  //将内层渲染好的列表项模块添加到外层大模块中
      '</div>';
  }
  data.innerHTML = html; //像指定的ID模块追加内容
}
//调用渲染数据方法并传递参数 JSON数组对象
getData(allData);

最终,VUE ,原生JS 渲染出来的列表数据效果均如下:

vue.js基于v-for实现批量渲染 Json数组对象列表数据示例

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
一个可以随意添加多个序列的tag函数
Jul 21 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
Nov 09 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
js实现不提交表单获取单选按钮值的方法
Aug 21 Javascript
深入浅析JavaScript中with语句的理解
May 12 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
May 31 Javascript
Bootstrap 源代码分析(未完待续)
Aug 17 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
Jan 03 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
Feb 26 Javascript
Vue中添加手机验证码组件功能操作方法
Dec 07 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
前端开发基础javaScript的六大作用
Aug 06 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 #Javascript
jQuery实现的记住帐号密码功能完整示例
Aug 03 #jQuery
小程序中英文混合排序问题解决
Aug 02 #Javascript
详解JWT token心得与使用实例
Aug 02 #Javascript
详解使用JWT实现单点登录(完全跨域方案)
Aug 02 #Javascript
基于mpvue的简单弹窗组件mptoast使用详解
Aug 02 #Javascript
vue下使用nginx刷新页面404的问题解决
Aug 02 #Javascript
You might like
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
Vue.js 插件开发详解
2017/03/29 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
vue登录注册实例详解
2019/09/14 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
react 原生实现头像滚动播放的示例
2020/04/21 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
Django权限机制实现代码详解
2018/02/05 Python
TensorFlow损失函数专题详解
2018/04/26 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
接待员岗位职责范本
2015/04/15 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
Python中json.dumps()函数的使用解析
2021/05/17 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python