Формат локального хранилища json-массива
Здравствуйте, я разрабатываю ионное приложение. Я новичок в Ionic и Typescript.
Как вы можете видеть на изображении ниже, я извлекаю из API свои данные в массиве json.
В ts файле я пишу этот код
` общедоступная категорияДетали: любые;
const datacat = JSON.parse (localStorage.getItem ('categoryData')); this.categoryDetails = datacat.categoryData; `
И в моем html файле, когда я пишу это
<h1 class = "business-top">Business of the category {{categoryDetails.name}}</h1>
Я получаю сообщение об ошибке «TypeError: не удается прочитать имя свойства undefined»
Я знаю, что неправильно читаю атрибут «имя». Как я могу это сделать?
Более того, как я могу отобразить компании, которые связаны с определенным term_id категории?



В этом примере вам нужно сделать это
<h1 class = "business-top">Business of the category {{categoryDetails?.name}}</h1>
public categoryDetails: any;
this.categoryDetails = localStorage.getItem('categoryData');
или вы можете использовать ионное хранилище. лучше, если вы используете ионный.
https://ionicframework.com/docs/storage/
import { Storage } from '@ionic/storage';
export class MyApp {
public categoryDetails: any;
constructor(private storage: Storage) { }
...
// set a key/value
storage.set('categoryData', 'Max');
// Or to get a key/value pair
storage.get('categoryData').then((val) => {
this.categoryDetails = val;
});
}
Я наконец выяснил это.
@Kilomat благодарит за вашу помощь и советы по использованию ионного хранилища. Это спасло меня от будущих проблем.
О моем файле json вот что я сделал.
В моем HTML-коде
<ion-grid no-margin>
<h1 class = "business-top">Επιχειρήσεις της κατηγορίας {{businessData.name}} {{businessData.term_id}}</h1>
<ion-list>
<ion-item class = "col col-50" *ngFor = "let c of BusinessCategoryDetails" text-wrap (click) = "product(c)">
<div *ngIf = "c.term_id == businessData.term_id">
<h2>{{c.post_title}} {{c.term_id}}</h2> <img width = "80" height = "80" src = "{{c.guid}}">
</div>
</ion-item>
</ion-list>
</ion-grid>
И в моем коде TS `var businessCategory: Categories = navParams.get (" businessCategory "); console.info (businessCategory); / экспортирует выбранную категорию /
var newData = JSON.stringify(businessCategory);
this.businessData = JSON.parse(newData);`
Которая берет свойства и значения из моей предыдущей страницы категории. Код TS
`категории: [categoryDetails] = null;
gotobusiness (категория: категории) { this.navCtrl.push (BusinessPage, {businessCategory: category}); } `
Ваше первое предложение не сработало. Появится пустое поле, в котором должно отображаться название категории. Что касается второго, все мое приложение было основано на localStorage. Я получаю свои данные из Mysql DB в виде массивов Json. Как вы можете видеть на прилагаемой фотографии, пользовательские данные могут быть хорошо прочитаны с помощью
const datacat = JSON.parse(localStorage.getItem('categoryData')); this.categoryDetails = datacat.categoryData;. Но все остальные Json, находящиеся в массивах, нельзя прочитать тем же методом? Как я могу прочитать атрибуты из businessData и CategoryData?