如何基于用户交互在页面/应用程序导航之间保持NativeScript开关组件的状态(ON / OFF)不变?

时间:2019-05-24 21:10:04

标签: nativescript nativescript-angular

我的问题: 目前,我有一个开关组件。 我的目标是当我导航到首页或其他页面时,能够单击开关组件“ ON”并使它保持开关状态为“ ON”。

尝试的解决方案和实验: 我将方法附加到NativeScript开关组件“内置”的本机(checkedChanged)事件中。 传递了内置(checkedChanged)事件后,来自开关的事件数据会单击。 然后,在首次用户单击时,无论是否随后单击,都将蛮力地将开关组件的“检查”属性强制设为TRUE或FALSE,这在两个单独的测试用例中都是如此,但是无论何时我离开该页面,都会重置该开关。我知道这是因为我的标志/计数器也已重置。每次我离开页面时。 有关如何执行此操作的任何提示。假设我在应用程序的一个页面中单击“打开”开关,然后导航到同一应用程序的另一个页面。还是完全关闭应用程序,是否有任何方法可以使状态保持不变?意味着开关会根据人的互动/切换而保持打开或关闭状态?

资源: https://docs.nativescript.org/angular/ui/ng-ui-widgets/switch

1 个答案:

答案 0 :(得分:0)

使用application-settings持久存储简单值。还有nativescript-localstorage / SQLite之类的用于持久存储数据的选项。对于简单的键值对,import { Component } from "@angular/core"; import { setBoolean, getBoolean } from "tns-core-modules/application-settings"; @Component({ selector: "Settings", moduleId: module.id, template: ` <ActionBar title="Settings" class="action-bar"> </ActionBar> <GridLayout> <ScrollView class="page"> <StackLayout class="form"> <GridLayout columns="*,auto"> <Label text="On / Off" class="h2"></Label> <Switch [ngModel]="value" (ngModelChange)="onSwtichChange($event)"></Switch> </GridLayout> </StackLayout> </ScrollView> </GridLayout> ` }) export class SettingsComponent { value = getBoolean("my-value", false); constructor() { } onSwtichChange(value: boolean) { setBoolean("my-value", value); } } 可能是一个不错的选择。

folk()

Playground Sample