Как сохранить отфильтрованные данные из JSON и отобразить в таблице (EmberJS) - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь отобразить таблицу записей при загрузке страницы в 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 голосов
/ 25 октября 2018

Вам необходимо сопоставить определенные свойства с другим фильтрованным массивом, подобным этому, и сохранить сопоставленные данные в sessionStorage:

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