我正在尝试在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:我确实看到了一些建议将所有内容放入路由器的示例,但是那是当他们假设响应是模型的子集时,就我而言,可能是相反的情况。
非常感谢!
答案 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);
},