余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

javascript数据模型,前端开发必备(数据分析前端框架)

xiyangw 2022-11-26 16:53 20 浏览 0 评论

以下场景使用vue为示例

场景1 :详情页面,展示非常多信息。

原始页面

//js

let a = {
 a: 1,
 ds: [{a: {c: "12"}}]
}

//template
<div>
 <span>{{a.a}}</span>
 <span v-if="a&&a.b">{{a.b.c}}</span>
 <span v-if="a.ds" v-for="d of a.ds">{{d.a&&d.a.b}} {{d.a&&d.a.c}}</span>
 <span v-if="a.es" v-for="e of a.es">{{e.a&&e.a.b}}</span>
</div>

问题:后端不传递没有值的数据,或者深层的对象没有值。

使用model

//js
let Detail = new Model({
 a: Number,
 b: { c: String },
 ds: [ { a: { b: String, c: String } } ],
 es: [ { a: { b: String } } ]
})

let a = Detail.parse({a: 1});

//a的结果为
=============
{
 a: 1,
 b: { c: null},
 ds: [ { a: { b: null, c: "12" } } ],
 es: []
}
=============
//template
<div>
 <span>{{a.a}}</span>
 <span>{{a.b.c}}</span>
 <span v-for="d of a.ds">{{d.a.b}} {{d.a.c}}</span>
 <span v-for="e of a.es">{{e.a.b}}</span>
</div>

场景2: 编辑数据

原始页面

//js
//返回数据1
let a = {int: 1} //使用这种方式赋值,vue会没有办法更新a.date这样的数据,我不知道大家是怎么解决的。

//返回数据2
let a = {int: 1, date: 1522302335544, money: 10000};
a.date = format(a.date); //为了编辑的展示
a.money = a.money / 10000; //为了编辑的单位,顺便说一下,我们的金额在数据都是存储以元为单位的。
//以上转换还需要判断是否为空值

//提交的时候
//以下转换还需要判断是否为空值
a.int = parseInt(a.int)
a.date = new Date(a.date);
a.money = a.money * 10000
submit

//template
<div>
 <input v-model="a.int"/>
 <DatePicker v-model="a.date"/>
 <input v-model="a.money"/>万
</div>

使用model

//js

let Edit = new Model({
 int: Number,
 date: {
 type: Model.DATE,
 format: 'YYYY-MM-DD' //此处使用manba日期工具
 },
 money: {
 type: Model.MONEY,
 unit: Model.W
 }
})
//返回数据1
let a = Edit.parse({int: 1});
//a的结果为
=============
{
 int: 1,
 date: null,
 money: null
}
=============
//在vue的v-model或者其他地方,可以直接引用a.date等数据。

//返回数据2
let a = Edit.parse({int: 1, date: 1522302335544, money: 10000});
//a的结果为
=============
{
 int: 1,
 date: "2018-03-29",
 money: 1
}
=============

//提交的时候
let data = Edit.dispose(a);
// 将空值删除,按照格式转换出标准化的数据,还有更多的配置选项可以选择。
// 如果数据无变更,将转换为:{int: 1, date: 1522302335544, money: 10000}
// 如果编辑的数据为{int: "1", date: null, money},将转换为:{int: 1}
// 上面的int会通过输入框编辑变成String
submit

//template
<div>
 <input v-model="a.int"/>
 <DatePicker v-model="a.date"/>
 <input v-model="a.money"/>万
</div>

看到上面两个场景,相信你应该清楚我们的javascript数据模型是做什么用的了。 以下,我们就开始介绍了。

js-Model

通过以下方式即可安装使用

npm install js-model --save

分享一下链接地址:

  • npm: js-modelgithub: vvpvvp/model

同时,这里用到的日期格式工具是manba,也是我自己写的哦,编写format格式可以参考manba的文档。

  • npm: manbagithub: vvpvvp/manba

方法

parse

当数据从后台传输过来的时候,日期是时间戳,金额是以元为单位,数据是不全的,因为只传递了有值的数据。 parse方法是帮你转换时间戳至时间字符串,金额以一定单位转换好,并帮你补全好所有的字段。

补全了所有数据,让你摆脱{{a&&a.b&&a.b.c}}这种无聊的判断了

dispose

当你需要把数据传送至后台之前,把日期转换成时间戳,把金额转换为以元为单位的数额,标准化数据格式,删除为空的数据。

例:通过input修改的数值为String, 通过dispose转换成数字格式。

相关推荐

JAVA应用程序集成控件JxBrowser v7.2来啦!允许自定义错误页面
JAVA应用程序集成控件JxBrowser v7.2来啦!允许自定义错误页面

JxBrowser是将基于Chromium的浏览器与Java应用程序集成,以处理和显示HTML5,CSS3,JavaScript,Flash等。JxBrowse...

2023-03-21 19:38 xiyangw

这款让浏览器失去功能的扩展为什么如此流行?
这款让浏览器失去功能的扩展为什么如此流行?

NoScript是一款知名的Firefox扩展,它会默认禁用JavaScript、Java、Flash、Sliverlight等浏览器脚本、插件,让用...

2023-03-21 19:38 xiyangw

Chrome禁用js规避网站不能复制(chrome 禁止跳转)
Chrome禁用js规避网站不能复制(chrome 禁止跳转)

Chrome禁用js规避网站不能复制有一些坑爹的网站不让复制文字,复制就得扫码关注或者付费之类的。作为白X党,怎么能忍受这个呢?在该网站页面,按住F12不松开,...

2023-03-21 19:37 xiyangw

苹果iOS9 Safari加入贴心功能:烦人弹窗请滚粗
苹果iOS9 Safari加入贴心功能:烦人弹窗请滚粗

苹果在最新的iOS9beta测试版中为手机版的Safari浏览器加入了一项十分实用的新功能,让用户们可以不用再忍受一些网站上的恶意行为。日前有不少用户在浏览网页...

2023-03-21 19:37 xiyangw

iOS 9.3应用链接失效可能是第三方应用所致(app内链接)
iOS 9.3应用链接失效可能是第三方应用所致(app内链接)

目前,苹果尚未就此事发表评论。威锋网讯,近日有用户指出,在升级iOS9.3后又发现了新的bug,具体表现为部分应用内的链接失效从而导致卡死、崩溃等情况...

2023-03-21 19:37 xiyangw

网页不能右键 F12 查看源代码解决方案(网站无法右键)
网页不能右键 F12 查看源代码解决方案(网站无法右键)

简单一种方法浏览器直接输入:view-source:网址或者使用快捷键为:Ctrl+UF12debug页面右键不能用的话,快捷键为:Ctrl+Shift+I再...

2023-03-21 19:37 xiyangw

新兴技术袭来,Web开发如何抉择?(新兴技术袭来,web开发如何抉择技术)
新兴技术袭来,Web开发如何抉择?(新兴技术袭来,web开发如何抉择技术)

【编者按】本文来自AListApart,重点讲述了开发者如何应对琳琅满目的新技术。作者建议,开发者在接受新概念的同时,更要重视对原始浏览器的支持,并增强用户...

2023-03-21 19:36 xiyangw

微软发现一种恶意软件新型下载方式——“HTML 走私”
微软发现一种恶意软件新型下载方式——“HTML 走私”

微软已经标记了一种相对较新的攻击方式,称为“HTML走私”,它被用于部署银行恶意软件和远程访问木马(RAT)的电子邮件活动,并作为有针对性的黑客攻击的一部...

2023-03-21 19:36 xiyangw

发生重大错误后,Avast 在其防病毒软件中禁用 JavaScript 引擎
发生重大错误后,Avast 在其防病毒软件中禁用 JavaScript 引擎

Avast决定禁用其杀毒软件的一个主要组成部分,因为此前一名安全研究员发现了一个危险的漏洞,可能会将该公司的所有用户置于危险之中。图片来源:Shutterst...

2023-03-21 19:36 xiyangw

网站能找到IP地址吗?(网站能找到ip地址吗安全吗)
网站能找到IP地址吗?(网站能找到ip地址吗安全吗)

在任何时候连接网站,网站都会自动访问基础系统,给出相关建议。建议包括版本和用于连接的Web浏览器,以及远程IP地址,操作系统和语言。当插件内容在网站上执行时...

2023-03-21 19:35 xiyangw

JavaScript框架的四个时代(javascript框架是什么)
JavaScript框架的四个时代(javascript框架是什么)

作者:Chris早在2012年,我就开始主要用JavaScript进行编程。我曾为一家本地企业用PHP从头到尾做了一个应用,一个基本的CMS内容管理系统和网站,...

2023-03-21 19:35 xiyangw

出于安全考虑,开发人员告诉用户不要启动这个顶级 Linux 发行版
出于安全考虑,开发人员告诉用户不要启动这个顶级 Linux 发行版

流行的TailsLinux发行版的开发人员(在新标签中打开)已警告用户在下一个版本发布之前不要使用该操作系统,如果他们使用它来输入或访问敏感信息(在新标签...

2023-03-21 19:34 xiyangw

关于eBay的禁止动态内容(关于ebay的禁止动态内容有哪些)
关于eBay的禁止动态内容(关于ebay的禁止动态内容有哪些)

动态政策JavaScript、Flash、插件及窗体操作等动态内容已无法在刊登物品中显示。如果卖家在刊登物品中包含动态内容,该内容将无法正常显示,这将影响买家的...

2023-03-21 19:34 xiyangw

WordPress文章防复制代码(wordpress复制网站)
WordPress文章防复制代码(wordpress复制网站)

酱茄jiangqie.com多人问WordPress文章怎么防止别人复制,今天酱茄小编把代码分享给大家,通过下面的JS代码即可有效的防止别人直接复制你的文章,...

2023-03-21 19:34 xiyangw

iOS9.3再爆新问题:点链接造成应用卡死(应用中打开链接)
iOS9.3再爆新问题:点链接造成应用卡死(应用中打开链接)

北京时间3月30日消息,苹果在一周前正式向用户推送了最新版本的iOS系统,即iOS9.3,但该系统却问题不断。现在新版的iOS9.3又爆出新问题,当点击Sa...

2023-03-21 19:33 xiyangw

取消回复欢迎 发表评论: