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 相关文章推荐
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
Jan 29 Javascript
IE6下JS动态设置图片src地址问题
Jan 08 Javascript
JavaScript中的异常捕捉介绍
Dec 31 Javascript
Javascript编程中几种继承方式比较分析
Nov 28 Javascript
关于在Servelet中如何获取当前时间的操作方法
Jun 28 Javascript
微信小程序 实战实例开发流程详细介绍
Jan 05 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
Jul 31 Javascript
关于Promise 异步编程的实例讲解
Sep 01 Javascript
浅析vue.js数组的变异方法
Jun 30 Javascript
Vue利用Blob下载原生二进制数组文件
Sep 25 Javascript
jquery ajax 请求小技巧实例分析
Nov 11 jQuery
如何开发一个渐进式Web应用程序PWA
May 10 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(1)
2006/10/09 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
Seajs源码详解分析
2019/04/02 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
python爬虫实例详解
2018/06/19 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
python利用7z批量解压rar的实现
2019/08/07 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
财政局个人总结
2015/03/04 职场文书
学校中秋节活动总结
2015/03/23 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis
使用scrapy实现增量式爬取方式
2022/06/21 Python