1

我看到 Switch 组件的行为非常奇怪......我在 ng 模板中使用它,每次我“切换”一个时,每隔 10 个 Switch 元素也会打开。不知道它来自哪里,特别是因为“checked”属性不是动态的(见下文)。还有其他人遇到这个问题吗?此外,即使我看到其他开关打开(或关闭,基于之前的状态),实际的“onInviteContact()”仅触发一次,用于有意单击的实际开关组件。

<RadListView
        [items]="contacts"
        class="list-group" width="100%">
    <ng-template tkListItemTemplate let-contact="item">
        <GridLayout class="contactItem" columns="2*, 3*, *, *" width="100%" orientation="horizontal">
            <Image col="0" *ngIf="contact.photo" [src]="contact.photo"
                   stretch="aspectFill" width="40%"></Image>
            <Image col="0" *ngIf="!contact.photo" src="res://profile_image"
                   stretch="aspectFill" width="40%"></Image>
            <Label col="1" class="nameLabel" [text]="contact.name"></Label>
            <Switch col="2" class="switchElement" checked="false"
                    (checkedChange)="onInviteContact($event, contact)"></Switch>
        </GridLayout>
    </ng-template>
</RadListView>
4

1 回答 1

1

对此行为的唯一可能解释是使用 Recycle Native View

https://github.com/NativeScript/NativeScript/blob/699e6f5da8ad79f5795e3758365115d681a146c2/tns-core-modules/ui/switch/switch-common.ts#L10

如您所见,它已设置为“自动”

我怀疑当本机视图在 rad 列表视图甚至列表视图中被回收时,您打开、回收和使用的开关的本机视图。

为避免这种情况,您应该将选中的属性绑定到某个可观察对象。

希望这能回答你的问题:)

干杯!

于 2017-12-10T18:22:56.127 回答