Отключить элемент в ListView - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть приложение, написанное на NativeScript с Angular 2. В нем у меня есть представление списка, подобное этому:

     <ListView row="1" [items]="items" (itemTap)="onNavigationItemTap($event)" class="root-drawer-content">
         <ng-template let-item="item">
             <StackLayout class="root-item-stack-layout">
                 <Label [text]="item.title" textWrap="true" class="btn btn-primary" [class.btn-active]="item.enabled"></Label>
                 <StackLayout height="1" class="root-drawer-content"></StackLayout>
             </StackLayout>
         </ng-template>
     </ListView>

Как я могу принудительно отключить определенный элемент?И визуально, и с точки зрения поведения.

1 Ответ

0 голосов
/ 20 ноября 2018

Вы почти у цели. Поскольку вы используете свойство item.enabled для выбора класса btn-active, вы можете применить ту же логику к отключенным (ваш пользовательский, например, изменить цвет фона на серый, чтобы он выглядел отключенным) на StackLayout.

<ng-template let-item="item">
             <StackLayout class="root-item-stack-layout" [class.enabled]="item.enabled">
                 <Label [text]="item.title" textWrap="true" class="btn btn-primary" [class.btn-active]="item.enabled"></Label>
                 <StackLayout height="1" class="root-drawer-content"></StackLayout>
             </StackLayout>
         </ng-template>

А что касается функциональности, вы можете справиться с этим в файле .ts, где вы управляете itemTap. (ItemTap) = "onNavigationItemTap ($ событие)"

public onNavigationItemTap(args) {

        const currentItemView = args.view;
        const item = currentItemView.bindingContext;
if(item.enabled){
// do your stuff
}
...