Как изменить весь вид без вызова navigate ()? - PullRequest
0 голосов
/ 03 февраля 2019
  1. Мне нужно динамически изменить целое view на другое (например, корневая раскладка должна быть изменена на DockLayout), но без использования метода Frame.navigate().Как это сделать?

  2. Другой вопрос о View.load() методе.Какие варианты использования этого метода?

const view = parse(`<StackLayout><Button tap="{{ onButtonTap }}" text="Tap me!"/></StackLayout>`);

class ViewModel extends Observable {

    public onButtonTap(args: EventData) {
        // need to change whole view to another here (for example, root layout should be DockLayout now)
        // but without using Frame.navigate() method
        // How do this?
    }
}

app.run({
    create: () => {
        view.bindingContext = new ViewModel();
        return view;
    }
});

1 Ответ

0 голосов
/ 03 февраля 2019

Вы можете использовать builder для этого.

const builder = require('tns-core-modules/ui/builder');

const view = builder.parse(`<StackLayout><Button tap="{{ onButtonTap }}" text="Tap me!"/></StackLayout>`);
view.bindingContext = myBindingContext;

// If you want to replace everything in Page
page.content = view;

Or

// If you want to add it to a parent layout
parentStackLayout.addChild(view);

Редактировать: Если вы хотите заменить свое корневое представление, то вы должны использовать метод _resetRootView дляapplication модуль.

const create = () => {
    const view = builder.parse(`<StackLayout><Button tap="{{ onButtonTap }}" text="Tap me!"/></StackLayout>`);
    view.bindingContext = myBindingContext;
    return view;
};
application._resetRootView({
    create: create
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...