javascript - 在 JSON 中存储一个对象以在 NgxData-Table 中输出
问题描述
我正在使用 Ionic 4,我想根据我的输入计算显示一个表格
我找到了一种从本地 JSON 文件中获取数据的方法,但这里的问题是我想根据计算的输入而不是 JSON 中的手动对象在表上显示数据。
这是 HTML 文件,我使用了 ngx-datatable
<ngx-datatable
class="material"
[rows]="rows"
[columnMode]="'force'"
[headerHeight]="50"
[footerHeight]="50"
[rowHeight]="'auto'">
<ngx-datatable-column name="Month">
<ng-template let-column="column" ngx-datatable-header-template>
{{column.name}}
</ng-template>
<ng-template let-value="value" ngx-datatable-cell-template>
<strong>{{value}}</strong>
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Interest">
<ng-template let-column="column" let-sort="sortFn" ngx-datatable-header-template>
<span (click)="sort()">{{column.name}}</span>
</ng-template>
<ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
<i>{{value}}</i>
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Principal">
<ng-template let-value="value" ngx-datatable-cell-template>
<strong>{{value}}</strong>
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Total">
<ng-template let-column="column" ngx-datatable-header-template>
{{column.name}}
</ng-template>
<ng-template let-value="value" ngx-datatable-cell-template>
<strong>{{value}}</strong>
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Balance">
<ng-template let-column="column" ngx-datatable-header-template>
{{column.name}}
</ng-template>
<ng-template let-value="value" ngx-datatable-cell-template>
<strong>{{value}}</strong>
</ng-template>
</ngx-datatable-column>
</ngx-datatable>
这是来自 TS 文件
this.fetch((data) => {
this.rows = data.splice(0, 5);
});
fetch(cb) {
const req = new XMLHttpRequest();
req.open('GET', `assets/data/company.json`);
req.onload = () => {
cb(JSON.parse(req.response));
};
req.send();
}
带有模拟数据的 JSON 文件
[
{
"month": "July/2019",
"interest": "11111",
"principal": "22222",
"total": "33333",
"balance": "44444"
},
{
"month": "Dec/2019",
"interest": "55555",
"principal": "66666",
"total": "77777",
"balance": "88888"
},
{
"month": "Jun/2019",
"interest": "99999",
"principal": "121212",
"total": "232323",
"balance": "343434"
}
]
我在这里计算了对象:
this.displayTotal = this.monthlyPayment;
this.displayPrincipal = this.displayTotal - this.displayInterest;
this.displayBalance = this.loanAmount - this.displayPrincipal;
this.displayInterest = (this.interestRate/this.loanTerm) * this.displayBalance;
this.displayMonth = this.displayMonth;
是否可以将这些对象集成到 JSON 文件中?
解决方案
是的,这应该是可能的。
首先,您可以将输入的结果转换为 JSON 格式:
/*this.displayTotal = this.monthlyPayment;
this.displayPrincipal = this.displayTotal - this.displayInterest;
this.displayBalance = this.loanAmount - this.displayPrincipal;
this.displayInterest = (this.interestRate/this.loanTerm) * this.displayBalance;
this.displayMonth = this.displayMonth;*/
//demo mocknumber:
var displayMonth = 1000;
var displayInterest = 10;
var displayPrincipal = 100;
var displayTotal = 1000;
var displayBalance = 10000;
var json = [{
"month": this.displayMonth,
"interest": this.displayInterest,
"principal": this.displayPrincipal,
"total": this.displayTotal,
"balance": this.displayBalance,
}];
console.log(json);
然后你可以按照这个答案所说的那样尝试(修改):
var a = document.createElement('a');
a.setAttribute('href', 'data:text/plain;charset=utf-u,' + encodeURIComponent(JSON.stringify(this.json)));
a.setAttribute('download', this.filename);
a.click()
演示:https ://stackblitz.com/edit/angular-m5wd2x?file=src/app/app.component.ts
推荐阅读
- java - holder.btn_email.setOnClickListener
- sql - 在这个带有左连接和过滤器的选择查询中我做错了什么?
- mysql - 是否有可以返回不同数量的产品的功能?
- django - 如何使用 django-rest-framework 和 React 从 django 发送密码重置电子邮件
- laravel - Laravel 上的 Quickbooks WebConnector 处理程序
- .net - AWS ECS EC2:调用 AWS API 时出现 TaskCanceledException(连接超时)
- javascript - 使用 ObjectLoader 加载包含具有多种材质的 BufferGeometry 的 JSON 不起作用
- python - 如何根据熊猫中另一行中的值组合一行中的值
- ms-access - 表单上的显示按钮(连续)取决于记录
- node.js - node.js:如何使用 eslint 检测重复导出?