У меня есть интересный набор данных, возвращаемый API, и я не могу разрешить привязку в представлении NativeScript для объекта объектов в контексте родительского связывания. Список items
(feeditems) является ObservableArray(). Все работает нормально. Я просто зациклен на повторении объекта feeds
(который может иметь более одного элемента) в объекте styles
, который доступен, а другие элементы, обращающиеся к родительскому bindingContext, работают нормально.Сложная структура JSON и привязка данных в NativeScript ListView
<lv:RadListView items="{{ feedItems }}">
<lv:RadListView.itemTemplate>
<GridLayout rows="auto, *, auto" columns="70, *, auto" class="feed-item">
<!-- Title and Description -->
<Label text="{{ title }}" color="{{ $parents['RadListView'].styles[site_id]['entry_title_color'], $parents['RadListView'].styles[site_id]['entry_title_color'] }}" />
<Label text="" color="{{ $parents['RadListView'].styles[site_id]['entry_btn_color'], $parents['RadListView'].styles[site_id]['entry_btn_color'] }}" />
<!-- Feed Image -->
<Image src="{{ image }}" stretch="aspectFit" />
<!-- Details Row -->
<!-- STUCK HERE TRYING TO REPEAT THE 'FEEDS' OBJECT -->
<Repeater items="{{ $parents['RadListView'].styles[site_id]['feeds'], $parents['RadListView'].styles[site_id]['feeds'] }}">
<Repeater.itemTemplate>
<Label text="{{ icon }}" />
</Repeater.itemTemplate>
</Repeater>
<Label text="{{ friendlytime }}" />
</GridLayout>
</lv:RadListView.itemTemplate>
</lv:RadListView>
Вот образец styles
JSON переплетены:
{"2":
{"id":2,"name":"TEST","icon":"https://www.TEST.com/test.png",
"entry_title_color":"#f00","entry_text_primary_color":"#3AF",
"feeds":
{"2":
{"id":2,"type":"rss","icon":"","notify":1}
}
}
}
На боковой ноте: не рекомендуется использовать «повторитель» в «itemTemplate» RadListView. Это элемент - это медленный компонент с высокой производительностью, и это может помешать встроенной виртуализации RadListView и сделать производительность не очень хорошей. Подумайте об этом так, когда создается собственный элемент ячейки для элемента itemTemplate, ему нужно будет дождаться, когда «Repeater» создаст свои элементы, которые не являются виртуализированными, и что процесс создания относительно медленный, тем самым нарушая встроенную виртуализацию или ухудшая его. –