-
vue处理json数据的原理_Vue解析json数据的渲染
2021-01-14 14:56:48姓名:{{item.name}}昵称:{{item.nick}}$(document).ready(function () {$.getJSON("data.json", function (result, status) {var v = new Vue({el: '#main',data: {rows: result}})});});test.json[{"name": "王小婷...姓名:{{item.name}}
昵称:{{item.nick}}
$(document).ready(function () {
$.getJSON("data.json", function (result, status) {
var v = new Vue({
el: '#main',
data: {
rows: result
}
})
});
});
test.json
[
{
"name": "王小婷",
"nick": "祈澈菇凉"
}, {
"name": "安安",
"nick": "坏兔子"
}, {
"name": "编程微刊",
"nick": "简书"
}
]
原文作者:祈澈姑娘 技术博客:https://www.jianshu.com/u/05f416aefbe1
90后前端妹子,爱编程,爱运营,文艺与代码齐飞,魅力与智慧共存的程序媛一枚。
坚持总结工作中遇到的技术问题,坚持记录工作中所所思所见,对于博客上面有不会的问题,欢迎加入编程微刊qq群:260352626
-
vue处理json数据的原理_vue中json处理方法
2021-01-14 14:56:48我的想法第一想法是要么隐藏,要么处理json删除这条数据。我用delete,但是发现原json长度不变只是变空了,而且在v-for渲染的时候报错了{{item.lesson_name}}var app = new Vue({el:"#myapp",data:function(){return...json后端给我的数据,现在要将 标准陪练-5节 这条数据不展示。我的想法第一想法是要么隐藏,要么处理json删除这条数据。我用delete,但是发现原json长度不变只是变空了,而且在v-for渲染的时候报错了
{{item.lesson_name}}
var app = new Vue({
el:"#myapp",
data:function(){
return{
json:[
{"type_name":"正课","lesson_name":"标准陪练课(中级)-90节","course_name":"标准陪练","lesson_no":"BZ-c2-3","lesson_num":90,"lesson_id":37,"xufei_buy_num":1,"level_name":"中级","money":11380,"shengyu_lesson_num":100,"free_lesson_num":12,"mode_name":"陪练","tuifei_num":0,"modify_date":"2017-10-16 13:32:41","lesson_min":50,"shouci_buy_num":1},
{"type_name":"正课","lesson_name":"标准陪练课(中级)-120节","course_name":"标准陪练","lesson_no":"BZ-c2-4","lesson_num":120,"lesson_id":38,"xufei_buy_num":0,"level_name":"中级","money":14180,"shengyu_lesson_num":0,"free_lesson_num":0,"mode_name":"陪练","tuifei_num":0,"modify_date":"2017-10-16 13:33:38","lesson_min":50,"shouci_buy_num":0},
{"type_name":"正课","lesson_name":"标准陪练课(中级)-200节","course_name":"标准陪练","lesson_no":"BZ-c2-5","lesson_num":200,"lesson_id":39,"xufei_buy_num":0,"level_name":"中级","money":22880,"shengyu_lesson_num":217,"free_lesson_num":17,"mode_name":"陪练","tuifei_num":0,"modify_date":"2017-10-16 13:35:01","lesson_min":50,"shouci_buy_num":1},
{"type_name":"正课","lesson_name":"标准陪练课(高级)-30节","course_name":"标准陪练","lesson_no":"BZ-c3-1","lesson_num":30,"lesson_id":40,"xufei_buy_num":1,"level_name":"高级","money":4680,"shengyu_lesson_num":35,"free_lesson_num":10,"mode_name":"陪练","tuifei_num":0,"modify_date":"2017-10-16 13:36:20","lesson_min":50,"shouci_buy_num":0},
{"type_name":"正课","lesson_name":"标准陪练课(高级)-60节","course_name":"标准陪练","lesson_no":"BZ-c3-2","lesson_num":60,"lesson_id":41,"xufei_buy_num":1,"level_name":"高级","money":9180,"shengyu_lesson_num":58,"free_lesson_num":2,"mode_name":"陪练","tuifei_num":0,"modify_date":"2017-10-16 13:37:36","lesson_min":50,"shouci_buy_num":0},
{"type_name":"正课","lesson_name":"标准陪练课(高级)-90节","course_name":"标准陪练","lesson_no":"BZ-c3-3","lesson_num":90,"lesson_id":42,"xufei_buy_num":0,"level_name":"高级","money":13480,"shengyu_lesson_num":91,"free_lesson_num":3,"mode_name":"陪练","tuifei_num":0,"modify_date":"2017-10-16 13:38:41","lesson_min":50,"shouci_buy_num":1},
{"type_name":"正课","lesson_name":"标准陪练课(高级)-120节","course_name":"标准陪练","lesson_no":"BZ-c3-4","lesson_num":120,"lesson_id":43,"xufei_buy_num":0,"level_name":"高级","money":17080,"shengyu_lesson_num":0,"free_lesson_num":0,"mode_name":"陪练","tuifei_num":0,"modify_date":"2017-10-16 13:39:45","lesson_min":50,"shouci_buy_num":0},
{"type_name":"正课","lesson_name":"标准陪练课(高级)-200节","course_name":"标准陪练","lesson_no":"BZ-c3-5","lesson_num":200,"lesson_id":44,"xufei_buy_num":0,"level_name":"高级","money":27680,"shengyu_lesson_num":0,"free_lesson_num":0,"mode_name":"陪练","tuifei_num":0,"modify_date":"2017-10-16 13:40:58","lesson_min":50,"shouci_buy_num":0},
{"type_name":"正课","lesson_name":"标准陪练-20节","course_name":"标准陪练","lesson_no":"BZ-c0-02","lesson_num":20,"lesson_id":64,"xufei_buy_num":0,"level_name":"全级别","money":2000,"shengyu_lesson_num":0,"free_lesson_num":0,"mode_name":"陪练","tuifei_num":0,"modify_date":"2017-11-24 15:15:22","lesson_min":50,"shouci_buy_num":0},
{"type_name":"正课","lesson_name":"标准陪练-5节","course_name":"标准陪练","lesson_no":"BZ-c0-01","lesson_num":20,"lesson_id":63,"xufei_buy_num":0,"level_name":"全级别","money":2000,"shengyu_lesson_num":14,"free_lesson_num":0,"mode_name":"陪练","tuifei_num":0,"modify_date":"2017-11-24 15:14:44","lesson_min":25,"shouci_buy_num":1}
]
}
},
created:function(){
//解开就报错
// for (let i = 0; i < this.json.length; i++) {
// console.log(i)
// for(let k in this.json[i]){
// if (this.json[i][k] == "标准陪练-5节") {
// delete this.json[i];
// break;
// }
// }
// }
}
})
-
vue处理json数据的原理_详解通过JSON数据使用VUE.JS
2021-01-30 13:42:03详解通过JSON数据使用VUE.JS发布于 2020-2-19|复制链接本篇文章主要介绍了详解通过JSON数据使用VUE.JS,具有一定的参考价值,感兴趣的小伙伴们可以参考一下最近接到一个比较简单的项目,不准备使用数据库,打算用...详解通过JSON数据使用VUE.JS
发布于 2020-2-19|
复制链接
本篇文章主要介绍了详解通过JSON数据使用VUE.JS,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
最近接到一个比较简单的项目,不准备使用数据库,打算用JSON数据就可以了。结合当前火热的VUE.JS进行数据渲染。尽管不打算使用数据库,可是一般的操作增删查改依旧是少不了的。如果使用到数据库的话,不妨做一个API出来,那么网站、APP等都可以依照这个进行操作。在这篇文章里面,我们只是打算简单的引用而已。下面先来看看我的JSON文件,这里是一个类别文档Category.json:
```javascript
{
"msg": "ok",
"data":[
{
"ID":"1",
"name": "地产",
"Url":"/Category/List/1"
},
{ "ID":"2",
"name": "科技",
"Url":"/Category/List/2"},
{ "ID":"3",
"name": "医药",
"Url":"/Category/List/3"},
{ "ID":"4",
"name": "其他",
"Url":"/Category/List/4"}
]
}
```
下面我们通过Javascript进行渲染,将数据渲染到导航里面去。这里有两种方式:如果你的项目已经带有JQuery的话,可以参考一下使用下面的代码:
```javascript
$(function(){
$.ajax({
type:'get',
url:'Category.json',
success: function(data){
if(data.msg == "ok"){
pushDom(data.data);
}
else
{
alert("服务器返回异常");
} },
error: function(data){
alert(JSON.stringify(data));
}
});
function pushDom(data1){
var vm = new Vue({ el: '#app', data: { peps:data1 } });
}
})
```
然后到html中,把数据渲染出来
```xhtml
{{pep.name}}
```
上面的代码是使用JQuery的$.ajax 将json的数据引入,但如果你的项目里面没有使用到JQuery的话,就要使用到vue-resource.js了。在html中引入:
```xhtml
```
我第一次使用vue-resource.js的时候,和vue.js版本不匹配居然屡屡出错,这是新手必须要注意的。这是一个坑啊,如果你们运行下面的代码不能渲染的话,99%是遇到这个坑了。
```javascript
var app = new Vue({
el: '#app',
data: {
peps: ''
},
mounted: function() {
this.getJsonInfo()
},
methods: {
getJsonInfo: function() {
this.$http.get('Category.json').then(function(response){
console.log(response.data.data)
var resdata = response.data.data
this.peps = resdata
}).catch(function(response){
console.log(response)
console.log("居然没有弹窗")
})
}
}
})
```
html处不用做其它修改。
-
vue处理json数据的原理_深入vue源码,了解vue的双向数据绑定原理
2020-12-14 00:58:54实现过程实现数据的双向绑定,首先要对数据进行劫持监听,所以我们需要设置一个监听器Observer,用来监听所有属性。如果属性发上变化了,就需要告诉订阅者Watcher看是否需要更新。因为订阅者是有很多个,所以我们...实现过程
实现数据的双向绑定,首先要对数据进行劫持监听,所以我们需要设置一个监听器Observer,用来监听所有属性。如果属性发上变化了,就需要告诉订阅者Watcher看是否需要更新。
因为订阅者是有很多个,所以我们需要有一个消息订阅器Dep来专门收集这些订阅者,然后在监听器Observer和订阅者Watcher之间进行统一管理的。接着,我们还需要有一个指令解析器Compile,对每个节点元素进行扫描和解析,将相关指令对应初始化成一个订阅者Watcher,并替换模板数据或者绑定相应的函数,此时当订阅者Watcher接收到相应属性的变化,就会执行对应的更新函数,从而更新视图。
因此接下去我们执行以下3个步骤,实现数据的双向绑定:
1.实现一个监听器Observer,用来劫持并监听所有属性,如果有变动的,就通知订阅者。
2.实现一个订阅者Suber,可以收到属性的变化通知并执行相应的函数,从而更新视图。
3.实现一个解析器Compile,可以扫描和解析每个节点的相关指令,并根据初始化模板数据以及初始化相应的订阅器。
1. Observer
Observer是一个数据监听器,其实现核心方法就是Object.defineProperty( )。如果要对所有属性都进行监听的话,那么可以通过递归方法遍历所有属性值,并对其进行Object.defineProperty( )处理。如下代码,实现了一个Observer。
2. Suber
订阅者Suber执行对应的get函数进行初始化, 在初始化的时候需要将自己添加进订阅者队列 SubQueue中, 当原来的值发生变化时执行相应的update函数
3. SubQueue
收集所有订阅者发生变化时通知订阅者
4. Compile
解析模板指令,并替换模板数据,初始化视图。将模板指令对应的节点绑定对应的更新函数,初始化相应的订阅器
5. Vue实例
测试页面
最后,如果觉得好的话,不要忘记点个收藏或者赞同哦~还可以添加我的vx:jgxiaokeai~加入前端技术交流群与千位大咖一起交流学习哦~
-
vue处理json数据的原理_vue 处理后台请求json数据,并渲染-Go语言中文社区
2021-01-14 14:56:51后台传给前台的json数据格式,这里原本只是传list数据给后台,因为需要分页,所以用pageInfo包了一下,成了json格式:{"data": {"endRow": 1,"firstPage": 1,"hasNextPage": false,"hasPreviousPage": false,... -
vue处理json数据的原理_前端面试题(二) 如何完美回答Vue中的数据劫持原理
2020-12-13 16:18:05本章目标彻底搞清楚vue的数据劫持(包括2.x和最新的3.0)如果说你的技术栈是vue,那么面试中肯定有一个问题绕不过,那就是vue的数据劫持原理。一般情况下,面试官会这样问:vue中的数据劫持是怎么实现的说一... -
vue处理json数据的原理_VUE实现原理v-model双向数据绑定原理学习分析
2021-01-14 14:56:291、view视图层实现一个指令解析器Compile,对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数2、mode数据层实现一个数据监听器Observer,能够对数据对象的所有属性进行监听,如有... -
vue处理json数据的原理_Vue---记一次通过{{}}获取json数据-页面渲染不出来的坑
2021-01-30 13:41:57前两天干活儿的时候碰到一个Vue的问题,让我这个菜鸡完全摸不到头脑,需求如下:前端页面点击表格中的某一行的详情按钮,会弹出一个Dialog,然后Dialog中有选项卡,选项卡中再有具体的table来展示详细的信息,根据id... -
mock在vue和jquery中的使用,以及json5小知识点
2020-12-22 17:31:10原理:监听拦截住ajax请求,返回mock处理后的数据。 使用示例: 目录结构: 首先在index.html中引入jquery和mcok <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &... -
vue中利用jsonp进行跨域请求获取数据
2019-02-28 09:48:112. jsonp原理:不是发生ajax请求,是动态处理script标签 ,script标签是可以跨域的。用js构造一个script标签,把json的url赋给script的scr属性,把这个script插入到dom里,让浏览器去获取。 3. 下载:npm in... -
用jquery来进行数据的增加删除
2017-07-19 18:15:00大家都知道用angular或者vue来进行数据的循环并操作数据很简单,最近试了试用jquery来进行数据的操纵,了解一下底层的原理。 工作中用到后台提供的接口并处理得到的json数据,然后展现到页面上,这时候用户可以... -
Vue 项目架构设计与工程化实践
2021-01-08 14:30:50对vue的原理有了解,项目开发中遇到的所有问题我都有信心能解决掉</li><li>调研了我们团队的成员,大部分都使用过vue,对vue多少都有过开发经验,并且之前团队内也用vue开发过一些项目</li>... -
跨域的三种主流解决方案
2019-08-05 16:23:08jsonp实现原理 : 主要是利用动态创建script标签请求后端接口地址,然后传递callback参数,后端接收callback,后端经过数据处理,返回callback函数调用的形式,callback中的参数就是json。 代理 前端代理我在vue中... -
跨域的解决方案
2019-08-04 20:20:49jsop实现原理:主要是利用动态创建script标签请求后端接口地址,然后传递callback参数,后端接收callback,后端经过数据处理,返回callback函数调用的形式,callback中的参数就是json 2. 代理(前端代理和后端代理)... -
跨域的解决方式有哪些?
2020-08-13 12:22:28jsonp 实现原理:主要是利用动态创建 script 标签请求后端接口地址,然后传递 callback 参数,后端接收 callback,后端经过数据处理,返回 callback 函数调用的形式,callback 中的参数就是 json 优点:浏览器兼容性... -
跨域及其解决方式
2019-08-15 20:10:18一、什么情况下会产生跨域...实现原理:利用动态创建script标签请求后端接口地址,然后传递callback参数,后端接收到后经过数据处理,返回callback中的参数就是json 2.代理 前端代理在vue中主要是通过vue脚手架中的c... -
用微信开发工具制作计时器效果
2020-06-25 13:55:49最近看到之前做过的一个计时器案例,感觉数据处理上和vue很相似,所以回顾一下制作过程。 界面很简单,原理是用canvas绘制出一个圆,圆下两个按钮控制计时开始和停止,在圆中有一个data记录时间的变化。效果如下: ... -
跨项目区块复用方案实践
2020-12-08 23:39:39关于 scope 的存储的原理后面会详细阐述。Bit 受到了 Git 的机制很大的启发,如果读者对 Git 熟悉的话,就会更容易理解 Bit。 <h4>Remote Scope(远程仓库) <p>Remote scope 是保存在... -
日志:每个软件工程师都应该知道的有关实时数据的统一抽象.epub 时间序列数据库的秘密.epub 智酷分析精选.epub 最完整的Docker聖經 - Docker原理圖解及全環境安裝.epub 最详细的 Vi 编辑器使用指南.epub 机器学习...
-
日志:每个软件工程师都应该知道的有关实时数据的统一抽象.epub 时间序列数据库的秘密.epub 智酷分析精选.epub 最完整的Docker聖經 - Docker原理圖解及全環境安裝.epub 最详细的 Vi 编辑器使用指南.epub 机器学习...
-
大型集群上的快速和通用数据处理架构 数据挖掘中经典的算法实现和详细的注释 Spark 编程指南简体中文版 返回目录 编程艺术 程序员编程艺术 每个程序员都应该了解的内存知识(译)【第一部分】 取悦的工序:如何...
-
黑马57期黑马最新资源来咯
2019-04-28 17:35:47|____04-ORM思想及相关框架实现原理 |____03-MVC |____02-数据库优化 |____01-JVM优化 |____23 微服务社交平台【十次方】· |____17 项目完结 |____16 dockfile |____15 SpringCloud之一统天下 |____14 ... -
实现原理: 当收到支付宝、微信、实时收款信息,客户端会实时通知服务器收款金额和方式,服务器收到有效期订单金额后处理订单状态,使用随机减免的方式区分订单(5分钟订单有效期内有相同金额的订单会随机减免0.01 -...
-
front-end-Doc 前端文档汇总(含代码规范、开发流程、知识分享,...Angular数据绑定原理 https://github.com/Pasvaz/bindonce 一些扩展Angular UI组件 https://github.com/angular-ui Ember和AngularJS的性能测试 ...