原生JS 批量渲染 Json数组对象列表数据(基于vue:v-for渲染列表数据原理的思考)

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

   


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

class="columns">
class="column">
class="card">
class="card-content">
id="data" class="columns is-multiline ">
class="column is-half">
class="media">
class="media-content">

class="has-text-weight-bold">职业知识

class="help">生涯树提供的职业数据框架,可以从职业能力、知识、技能、活动、内容方面进行探索和规划

class="message-body">
class="field buttons"> 兴趣: 常见的任务和环境的偏好

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

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

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

class="column is-half" v-for="(item, index) in items">
class="media">
class="media-content">

class="has-text-weight-bold">{{ item.id }}

class="help">{{ item.name }}

class="message-body" v-for="(list, index) in item.lists">
class="field buttons" > {{ list.title}}: {{ list.describe}}

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

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

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;jlists.length;j++){ //内层循环渲染详细列表项
            list+='
'+ '
'+ ''+allData[i].lists[j].title+':'+ ''+allData[i].lists[j].describe+''+ '
'
+ '
'
; } html+='
'+ '
'+ '
'+ '

'+allData[i].id+'

'
+ '

'+allData[i].name+'

'
+ '
'
+ '
'
+list+ //将内层渲染好的列表项模块添加到外层大模块中 '
'
; } data.innerHTML = html; //像指定的ID模块追加内容 }
 
  
//调用渲染数据方法并传递参数 JSON数组对象
getData(allData);

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

原生JS 批量渲染 Json数组对象列表数据(基于vue:v-for渲染列表数据原理的思考)_第1张图片

你可能感兴趣的:(原生JS实现的样例)