离子/角度复选框自定义逻辑

时间:2017-03-01 06:33:27

标签: javascript html angular typescript ionic2

我正在Ionic 2中编写一个小应用程序。在这个应用程序中,我有一个“Checkboxmodal”,它可以为我的appstate中的元素列表创建一个选项。

在html中:

<ion-list>
    <ion-item *ngFor="let key of itemDic.keys()">
        <ion-label>{{itemDic.get(key)}}</ion-label>
        <ion-checkbox (click)="toggleItem(key)" value="key" [checked]="selectedItems.indexOf(key) > -1"></ion-checkbox>
    </ion-item>
</ion-list>

切换方法:

// Data used
this.itemDic = ... // local. saves possible options
this.selectedItems = ... // reference to appstate (global object). saves the selected values

// toggle function
toggleItem(item: any) {
    if(searchState.contains(...)) {
        searchState.remove(...);
    } else {
        if (this.selectedItems.length >= this.maxItems)
            return;

        searchState.set(...);
    }
}

当我想扩展其功能时,一次只允许x选择,我遇到了以下问题:

  • 数据绑定似乎无法正常工作
  • 即使我的功能未更改模型
  • ,Angular也会更新视图

我怎么能:

  • 停止角度/离子以更改视图或数据
  • 决定自己的模特变化
  • 仅显示数据的当前值作为绑定

1 个答案:

答案 0 :(得分:0)

我看来,没有办法实现,我想要的是什么。我用另一种方法“解决”了这个问题:

<ion-checkbox 
    (click)="toggleItem(key)" 
    value="key" 
    [disabled]="selectedItems.indexOf(key) === -1 && selectedItems.length >= 3" 
    [checked]="selectedItems.indexOf(key) > -1">
</ion-checkbox>

我发现,你可以通过绑定到disabled属性来禁用复选框。所以我只检查当前的复选框

  • 未选中
  • 超过选中的最大复选框

并禁用它,如果两者都是真的。

如果有人知道更好的方法,请发布。