Плагин аккордеонистов nativescript предоставляет некоторую помощь для переключения, хотя некоторые функции еще предстоит уладить. Если кто-то отчаянно нуждается в аккордеоне на Nativescript iOS, это, вероятно, то место, с которого стоит начать.
азываю данные с RadListView, который имеет категории и подстатьи (Nativescript Angular, iOS).
Я хочу, чтобы страница загружалась, показывая только категории, и, если пользователь нажимает на какую-либо категорию, он переключает записи (показывается по клику, а затем скрывается по другому клику).
Это возможно?
Я не видел, чтобы это успешно выполнялось с текущей версией pro ui и NS. Я не смог заставить его работать самостоятельно.
Более подробная информация о других подходахВот.
Существует плагин NS для аккордеона, но я думаю, что цель здесь должна быть возможна с помощью простого кода, особенно потому, что в моем случае я хочу настроить немало.
Я столкнулся с двумя проблемами:
1)Как изолировать клик на самой категории? Кажется, что функция группировки «скрывает» заголовок категории программно - я не смог узнать, когда пользователь нажимает на нее (вместо того, чтобы регистрировать только щелчки по всей группе), и не смог стилизовать заголовок этой группы.
2)Как только вы щелкнете заголовок категории, как мне показать / скрыть записи ниже? Обычно я бы использовал что-то вродеvisibility="{{isClicked ? 'visible' : 'collapsed'}}
, но это не работает с RadListView.
Вот пример кода, чтобы лучше понять цель:
HTML:
<GridLayout >
<RadListView [items]="places" selectionBehavior="Press" (itemSelected)="itemSelected($event)" [groupingFunction]="myGroupingFunc" >
<ng-template tkListItemTemplate let-place="item" >
<StackLayout>
<Label [text]="place.city"></Label>
<Label [text]="place.people" ></Label> //NOTE: I have not yet determined how to show this second level data within RadListView.
</StackLayout>
</ng-template>
</RadListView>
</GridLayout>
TS:
import { Component, OnInit, } from "@angular/core";
import { Router, } from "@angular/router";
import { ObservableArray } from "tns-core-modules/data/observable-array";
import { RadListView, ListViewEventData, } from "nativescript-ui-listview";
@Component({
selector: "Sample",
moduleId: module.id,
templateUrl: "./sample.component.html",
})
export class SampleComponent implements OnInit {
public places = [
{country: 'US', city: 'New York', people: [{name: 'Bill', age: 22}, {name: 'Suzy', age: 23} ] },
{country: 'US', city: 'Los Angeles', people: [{name: 'Sarah', age: 21}, {name: 'Barb', age: 23} ] },
{country: 'Canada', city: 'Toronto', people: [{name: 'Fred', age: 30}, {name: 'Ted', age: 31} ] },
{country: 'England', city: 'London', people: [{name: 'Jim', age: 22}, {name: 'Joe', age: 19} ] }
]
constructor() {
}
myGroupingFunc(value) {
return value.country;
}
itemSelected(args) {
/***is there a way this can isolate the tap on country name?*****/
}
}