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

How to store filtered data from JSON and display in table (EmberJS)

我正在尝试在 EmberJS 的页面加载中显示 table 条记录。数据来自 ajax 调用,它给出了非常大的 JSON 响应。以下是该过程的概述(它应该如何工作): 页面加载 -> Ajax 调用(在控制器中) -> 响应 -> 在某处存储数据(过滤) -> 在 Table

中显示

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

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

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: 我确实看到了一些建议将所有内容都放在路由器中的示例,但那是他们假设响应是 模型的子集,而在我的例子中,它可能是相反的。

非常感谢!

您需要 map 某些属性到另一个过滤数组,并将映射数据保存到您的 sessionStorage:

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