如何存储来自JSON的过滤数据并在表中显示(EmberJS)

时间:2018-10-25 06:14:39

标签: javascript ajax ember.js

我正在尝试在EmberJS中显示页面加载时的记录表。数据来自ajax调用,该调用给出了很大的JSON响应。这是该过程的概述(应如何工作): 页面加载-> Ajax调用(在控制器中)->响应->将数据存储在某个地方(已过滤)->在表格中显示

到目前为止,我已经成功获得了JSON响应,但是数据量巨大,并且包含多个字段和嵌套字段。我只需要存储响应中的某些数据,例如名称电子邮件等。

这是我的控制器的代码,该代码在页面加载时运行:

import Controller from '@ember/controller';
import Ember from 'ember';

export default Controller.extend({
ajax: Ember.inject.service(),
init:function(){
  const token = sessionStorage.getItem('token')
  this.get('ajax').request('http://127.0.0.1/SugarPro-Full-8.0.0/rest/v10/Leads',{
    method: 'GET',
    headers:{
    'Content-Type': 'application/json',
    'oauth-token': `${token}`
    },
    success: function(response){
      console.log(response);
      sessionStorage.setItem("data", response);
    },
    error: function(){
      window.alert("Please Login!");
      window.location.assign("/login-page");

    },
    dataType: 'json'
  });
}
});

注意::我将回复存储在sessionStorage中,因为我不知道从这里去哪里,因此如果需要,可以将其忽略。

PS:我确实看到了一些建议将所有内容放入路由器的示例,但是那是当他们假设响应是模型的子集时,就我而言,可能是相反的情况。

非常感谢!

1 个答案:

答案 0 :(得分:1)

您需要将map的某些属性{{3}}移到另一个经过过滤的数组中,然后将映射的数据保存到sessionStorage

success: function(response){
  mappedresponse = response.map(item =>{
    return {"name": item.name, "email": item.email};
  });
  console.log(mappedresponse);
  sessionStorage.setItem("data", mappedresponse);
},