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

vue

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/[email protected]/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 渲染出来的列表数据效果均如下:


以上是 原生JS 批量渲染 Json数组对象列表数据(基于vue:v-for渲染列表数据原理的思考) 的全部内容, 来源链接: utcz.com/z/378321.html

回到顶部