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