代码之家  ›  专栏  ›  技术社区  ›  Aydar Omurbekov

无法将数组保存在6中组件init的sessionStorage中

  •  0
  • Aydar Omurbekov  · 技术社区  · 6 年前

    sessionStorage EquipmentStoreService ,但它不会保存在sessionStorage中。我如何处理这个问题?

    export class DashboardComponent implements OnInit {
      equipments: Equipment[];
    
      constructor(private equipmentService: EquipmentService,
                  private equipmentStore: EquipmentStoreService) { }
    
      ngOnInit() {
        this.equipmentService.getItems()
          .subscribe( data => {
              this.equipmentStore.updateThisStore(data);
              this.equipments = this.equipmentStore.all();
          });
      }
    }
    

    @Injectable({
      providedIn: 'root'
    })
    
    export class EquipmentStoreService {
      private static STORAGE_KEY = 'current-equipments';
      equipments: Array<Equipment>;
    
      constructor () {
        this.equipments = JSON.parse(sessionStorage.getItem(EquipmentStoreService.STORAGE_KEY) || '[]');
      }
    
      updateStore() {
        localStorage.setItem(EquipmentStoreService.STORAGE_KEY, JSON.stringify(this.equipments));
      }
    
      updateThisStore(equipments: Equipment[]) {
        this.equipments = equipments;
        this.updateStore();
      }
    
      all() {
        return this.equipments;
      }
    }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   fiza khan LuisMorais    6 年前

    这是因为您在localStorage中设置数据,并在sessionStorage中获取数据。

    @Injectable({
      providedIn: 'root'
    })
    
    export class EquipmentStoreService {
      private static STORAGE_KEY = 'current-equipments';
      equipments: Array<Equipment>;
    
      constructor () {
        this.equipments = JSON.parse(sessionStorage.getItem(EquipmentStoreService.STORAGE_KEY) || '[]');
      }
    
     updateStore() {
       sessionStorage.setItem(EquipmentStoreService.STORAGE_KEY, JSON.stringify(this.equipments));
     }
    
     updateThisStore(equipments: Equipment[]) {
       this.equipments = equipments;
       this.updateStore();
     }
    
     all() {
      return this.equipments;
     }
    }
    

    希望有帮助!

        2
  •  1
  •   Nabil Shahid    6 年前

    在updateStore函数中,将数组保存在 localStorage sessionStorage . 使用 sessionStorage.setItem 函数将项目保存在会话存储中。

    推荐文章