Как сделать так, чтобы состояние компонента переключателя NativeScript (ВКЛ / ВЫКЛ) сохранялось между переходами между страницами / приложениями на основе взаимодействия с пользователем? - PullRequest
0 голосов
/ 25 мая 2019

Моя проблема: В настоящее время у меня есть компонент переключателя, с которым я возился.Моя цель состоит в том, чтобы иметь возможность щелкнуть компонент переключателя «ВКЛ» и оставить его включенным, когда я вернусь на главную страницу или на другую страницу.

Попытки решения и эксперименты: Я прикрепил метод к собственному событию (checkedChanged), которое «встроено» в компоненты переключателя NativeScript.Пропустил встроенное (checkChanged) событие, данные события от щелчка переключателя.Затем brute принудительно заставил атрибут «флажок» компонента коммутатора постоянно иметь значение ИСТИНА или ЛОЖЬ в двух отдельных тестовых случаях при первом клике пользователя, независимо от последующих кликов ... но всякий раз, когда я ухожу со страницы, рассматриваемый коммутатор сбрасывается.Я знаю это, потому что мой флаг / счетчик также сбрасывается.Каждый раз, когда я ухожу от страницы.Любые советы о том, как это сделать.Скажем, я нажимаю переключатель «ВКЛ» на одной странице в приложении и перехожу на другую страницу в том же приложении.Или закрыть приложение полностью, есть ли способ заставить государство сохраняться?Это означает, что переключатель остается включенным или выключенным в зависимости от взаимодействия / переключения человека?

Ресурсы: https://docs.nativescript.org/angular/ui/ng-ui-widgets/switch

1 Ответ

0 голосов
/ 25 мая 2019

Используйте application-settings для постоянного хранения простого значения. Существуют также опции, такие как nativescript-localstorage / SQLite для постоянного хранения данных. application-settings может быть хорошим выбором для простых пар ключ-значение.

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);
    }
}

Образец игровой площадки

...