禁用ListView中的项目

时间:2018-11-16 15:05:56

标签: angular2-nativescript

我有一个用Angular 2用NativeScript编写的应用程序。在其中,我有一个像这样的列表视图:

     <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 :(得分:1)

您快到了。当您使用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>

并且对于功能,您可以在管理itemTap的.ts文件中进行处理。 (itemTap)=“ onNavigationItemTap($ event)”

public onNavigationItemTap(args) {

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