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 相关文章推荐
优化Node.js Web应用运行速度的10个技巧
Sep 03 Javascript
node.js中的fs.closeSync方法使用说明
Dec 17 Javascript
JS实现三个层重叠点击互相切换的方法
Oct 06 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
Dec 03 Javascript
jquery.serialize() 函数语法及简单实例
Jul 08 Javascript
15款最好的Bootstrap在线编辑器
Aug 03 Javascript
javascript设计模式Constructor(构造器)模式
Aug 19 Javascript
AngularJS实现进度条功能示例
Jul 05 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
Sep 05 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
Jun 03 Javascript
vue中组件通信的八种方式(值得收藏!)
Aug 09 Javascript
ES6 解构赋值的原理及运用
May 25 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往windows中添加用户
2006/12/06 PHP
php反弹shell实现代码
2009/04/22 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
zend framework重定向方法小结
2016/05/28 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
页面中iframe相互传值传参
2009/12/13 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
详细分析React 表单与事件
2020/07/08 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
深入理解Python3中的http.client模块
2017/03/29 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
纽约手袋品牌:KARA
2018/03/18 全球购物
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
学校感恩教育活动总结
2014/07/07 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
领导工作表现评语
2015/01/04 职场文书
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python