artTemplate--使用artTemplate时,由于json对象属性有数字命名格式 导致调用报错 syntax error

原创 2016年07月08日 11:39:48

案例


今天在使用artTemplate做开发时,遇到一个比较奇葩的问题,就是使用json对象去获取值得时候,报如下错误:


Template Error

<temp>
function anonymous($data,$filename) {'use strict';var $utils=this,$helpers=$utils.$helpers,$escape=$utils.$escape,crediteaseReportData=$data.crediteaseReportData,$each=$utils.$each,riskItem=$data.riskItem,$index=$data.$index,loanRecord=$data.loanRecord,$out='';$out+='<div class="contentWrap splitHeader">\n    <a href="#" class="buttonActive" data-toggle="back" style="float: right;margin-right: 20px;"><span><<返回</span></a>\n\n    <h1>宜信致诚数据详情</h1>\n</div>\n\n\n<table >\n    <tbody>\n    <tr>\n        <th style="border: 1px solid #ddd;background: #f5f5f5;padding: 8px;width: 111px;border-top: 1px solid #ddd;vertical-align: top;">致诚分</th>\n        <td style="style="margin-bottom: 1px"">\n        <table class="table table-bordered" style="margin-bottom: 0px">\n            <tbody>\n            <tr>\n                <th style="border: 1px solid #ddd; vertical-align: top;  border-top: 1px solid #ddd;display: table-cell;background: #f5f5f5;padding: 8px;">信用评分</th>\n                <td style="border: 1px solid #ddd;padding: 8px;  line-height: 1.42857143;  vertical-align: top;  border-top: 1px solid #ddd;width: 781px;">\n                    ';
$out+=$escape(crediteaseReportData.creditScore.result.creditScore);
$out+=' (分值范围300~850)</td>\n            </tr>\n            <tr>\n                <th style="border: 1px solid #ddd;  vertical-align: top;  border-top: 1px solid #ddd;display: table-cell;background: #f5f5f5;padding: 8px;">违约概率</th>\n                <td style="border: 1px solid #ddd;padding: 8px;  line-height: 1.42857143;  vertical-align: top;  border-top: 1px solid #ddd;width: 781px;">\n                    ';
$out+=$escape(crediteaseReportData.creditScore.result.rate);
$out+='</td>\n            </tr>\n\n            </tbody>\n        </table>\n        </td>\n    </tr>\n\n    <tr>\n        <th style="border: 1px solid #ddd;background: #f5f5f5;padding: 8px;width: 111px;border-top: 1px solid #ddd;vertical-align: top;">风险名单对比结果</th>\n        <td style="margin-bottom: 1px">\n            <table class="table table-bordered" style="margin-bottom: 0px">\n                <tbody>\n                <tr>\n                    <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">命中项</th>\n                    <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">命中内容</th>\n                    <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">风险类别</th>\n                    <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">风险发生时间(最近)</th>\n                </tr>\n                ';
$each(crediteaseReportData.blackList.result.riskItems,function(riskItem,$index){
$out+='\n                <tr>\n                    <td style="border: 1px solid #ddd; width: 218px;  padding: 8px;">';
$out+=$escape(riskItem.riskItemType);
$out+='</td>\n                    <td style="border: 1px solid #ddd; width: 218px;  padding: 8px;">';
$out+=$escape(riskItem.riskItemValue);
$out+='</td>\n                    <td style="border: 1px solid #ddd; width: 218px;  padding: 8px;">';
$out+=$escape(riskItem.riskType);
$out+='</td>\n                    <td style="border: 1px solid #ddd; width: 218px;  padding: 8px;">';
$out+=$escape(riskItem.riskTime);
$out+='</td>\n                </tr>\n                ';
});
$out+='\n                </tbody>\n\n            </table>\n        </td>\n    </tr>\n\n <tr>\n                    <th style="border: 1px solid #ddd;background: #f5f5f5;padding: 8px;width: 111px;border-top: 1px solid #ddd;vertical-align: top;">借款情况</th>\n                    <td style="margin-bottom: 1px">\n                        <table class="table table-bordered" style="margin-bottom: 0px">\n                            <tbody>\n                            <tr>\n                                <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">借款时间</th>\n                                <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">借款金额</th>\n                                <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">审批结果</th>\n                                <th style="border: 1px solid #ddd;background: #f5f5f5;width: 218px;padding: 8px;">目前状态</th>\n                            </tr>\n                            ';
$each(crediteaseReportData.queryLoan.result.loanRecords,function(loanRecord,$index){
$out+='\n                            <tr>\n                                <td style="border: 1px solid #ddd; width: 218px;  padding: 8px;">';
$out+=$escape(loanRecord.loanTime);
$out+='</td>\n                                <td style="border: 1px solid #ddd; width: 218px;  padding: 8px;">';
$out+=$escape(loanRecord.amount);
$out+='</td>\n                                <td style="border: 1px solid #ddd; width: 218px;  padding: 8px;">';
$out+=$escape(loanRecord.approveStatus);
$out+='</td>\n                                <td style="border: 1px solid #ddd; width: 218px;  padding: 8px;">';
$out+=$escape(loanRecord.currentStatus);
$out+='</td>\n                            </tr>\n                            ';
});
$out+='\n                            <tr><td>逾期统计:共借款逾期';
$out+=$escape(crediteaseReportData.queryLoan.result.overdue['overdueTimes']);
$out+='次,90天以上逾期  ';
$out+=$escape(crediteaseReportData.queryLoan.result.overdue.90overdueTimes]);
$out+=' 次,180天以上逾期  ';
$out+=$escape(crediteaseReportData.queryLoan.result.overdue['180overdueTimes']);
$out+=' 次</td></tr>\n                            </tbody>\n                        </table>\n                    </td>\n                </tr>\n\n\n\n\n    </tbody>\n</table>';
return new String($out);}

<filename>
yx_creditease_detail

<name>
Syntax Error


后台返回的json字符串格式如下:

 "queryLoan": {
        "crediteaseId": 1,
        "data": "{"overdue":{"180overdueTimes":0,"overdueTimes":0,"90overdueTimes":0},"loanRecords":[{"amount":"(20000,50000]","approveStatus":"未通过","approveStatusCode":"203","currentStatus":"---","currentStatusCode":"---","loanTime":"2015"}]}",
        "idCard": "510226196602284031",
        "queryType": "queryLoan",
        "querytime": 1467870500000,
        "responseCode": "000000",
        "responseContent": "成功",
        "result": {
            "loanRecords": [
                {
                    "amount": "(20000,50000]",
                    "approveStatus": "未通过",
                    "approveStatusCode": "203",
                    "currentStatus": "---",
                    "currentStatusCode": "---",
                    "loanTime": "2015"
                }
            ],
            "overdue": {
                "180overdueTimes": 0,
                "90overdueTimes": 0,
                "overdueTimes": 0
            }
        }




具体是因为添加了如下代码:

<tr><td>逾期统计:共借款逾期{{crediteaseReportData.queryLoan.result.overdue['overdueTimes']}}次,90天以上逾期  {{crediteaseReportData.queryLoan.result.overdue.90overdueTimes}} 次,180天以上逾期  {{crediteaseReportData.queryLoan.result.overdue['180overdueTimes']}} 次</td></tr>

注意加入如下代码时,是没有任何异常出现的:

{{crediteaseReportData.queryLoan.result.overdue.overdueTimes}}


但是加入下面代码后,马上报语法错误:

{{crediteaseReportData.queryLoan.result.overdue.90overdueTimes}}


解决方案

出现上图原因是因为json属性的命名格式有数字,导致不能直接使用对象"."属性的方式



crediteaseReportData.queryLoan.result.overdue.90overdueTimes

只需要修改为如下类似数组方式即可:

crediteaseReportData.queryLoan.result.overdue['90overdueTimes']


版权声明:本文为博主原创文章,未经博主允许不得转载。

artTemplate模板引擎简单使用

artTemplate模板引擎简单使用介绍 javascript模板引擎
  • weixin_37396946
  • weixin_37396946
  • 2017年01月26日 15:33
  • 593

JS Template

模板 " /> "  /> " /> ','','');"> " class="icon">  用法 ...
  • qq873113580
  • qq873113580
  • 2018年01月19日 22:17
  • 55

使用artTemplate绑定json数据

概要artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了质的飞跃,并且充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。...
  • u012948731
  • u012948731
  • 2015年08月10日 11:42
  • 4832

artTemplate--模板使用自定义函数(1)

案例 因为公司业务需要频繁调用接口,后端返回的都是json树对象,需要有些特殊的方法做大量判断和数据处理,显然目前简单语法已经不能满足业务需要了,需要自己定制一些 方法来处理业务逻辑。 例如后...
  • Evan_Leung
  • Evan_Leung
  • 2016年07月10日 00:01
  • 7013

JavaScript模板引擎的应用场景及实现原理

一、应用场景 以下应用场景可以使用模板引擎: 1、如果你有动态ajax请求数据并需要封装成视图展现给用户,想要提高自己的工作效率。 2、如果你是拼串族或者数组push族,迫切的希望改变现有的...
  • u013510614
  • u013510614
  • 2016年07月17日 08:44
  • 1153

artTemplate-3.0复杂对象的遍历与使用方法

artTemplate-3.0复杂对象的遍历与使用方法
  • sunbingzibo
  • sunbingzibo
  • 2016年10月14日 15:15
  • 5364

JS模板引擎-腾讯artTemplate 简洁语法例子

Index {{if isAdmin}} {{title}} {{each list as value index}...
  • jiazimo
  • jiazimo
  • 2014年09月12日 17:10
  • 128163

artTemplate嵌套使用(二)

先展示json数据的组成:public void getAllTanWeiAndTanWeiDetail(){ List plist=this.tanWeiService.getAll...
  • u012948731
  • u012948731
  • 2015年08月21日 23:54
  • 8143

《Flask Web开发》学习笔记之bug--(5)【jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag 'endlock'】

# hello.py from datetime import datetime from flask import Flask, render_template from flask_script...
  • qq_33528613
  • qq_33528613
  • 2017年07月13日 14:27
  • 735

artTemplate的简单用法

在实际开发中,我们会使用模板引擎来提高开发效率。而众多的模板引擎中,artTemplate无论就速度,兼容性还是使用人数上,都占绝对优势。这里我将简单地介绍下artTemplate的常见用法。 对于这...
  • qq_34477549
  • qq_34477549
  • 2016年10月15日 09:46
  • 3903
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:artTemplate--使用artTemplate时,由于json对象属性有数字命名格式 导致调用报错 syntax error
举报原因:
原因补充:

(最多只允许输入30个字)