-
Notifications
You must be signed in to change notification settings - Fork 5
Description
ListView/RadListView have quickly become THE major thorn in my side while testing Glimmer Native out. We need to use ListView/RadListView because they provide native view recycling. Without them, rendering a large list of items would kill the app on the phone or at the very least slow it down greatly.
The following issues need to be fixed before a 1.0 release can happen
-
Tracked properties currently don't work inside a ListView Item. This is because list view items are rendered outside the main application - https://github.com/bakerac4/glimmer-native/blob/master/src/dom/native/RadListViewElement.ts#L34
-
ifhelpers don't run on manual re-render. I think this has to do with list items being rendered outside of the main application as well. -
Other flavors of View Layer + Nativescript (vue, angular etc) allow for a template to be specified inline. For Example, in angular -
<RadListView [items]="dataItems">
<ng-template tkListItemTemplate let-item="item">
<StackLayout orientation="vertical">
<Label class="nameLabel" [text]="item.name"></Label>
<Label class="descriptionLabel" [text]="item.description"></Label>
</StackLayout>
</ng-template>
</RadListView>
Right now, Glimmer Native requires an actual component to be created so we can render it.
Along with specifying a template inline, I think it would be beneficial to give the user the option to user a real component. Currently this is how we do things, but there are downsides I haven't been able to solve.
- Currently need a wrapping template - which ties into Render Component needs wrapper #25
- Need ability to pass in actions and properties from the page doing the rendering to the ListViewItem component.