【问题标题】:How change whole view without calling navigate()?如何在不调用 navigate() 的情况下更改整个视图?
【发布时间】:2019-02-03 13:51:24
【问题描述】:
  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;
    }
});

【问题讨论】:

    标签: nativescript


    【解决方案1】:

    你可以使用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);
    

    编辑:如果要替换根视图本身,则必须在 application 模块上使用 _resetRootView 方法。

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

    【讨论】:

    • 在我的示例中没有Page 元素。根是StackLayout。你展示了如何创建View。但是我问当它创建和显示时如何动态地改变整个视图。我知道addChild,不是关于它的问题,而是关于整体观点的问题。
    • 正如我在评论中已经说过的,只需获取您的 StackLayout 参考,删除现有的孩子并添加新的孩子。
    • 再来一次。对StackLayout 的引用是const view。而且我知道删除和添加孩子的能力。但是如何将StackLayout 更改为DockLayout(全视图)。
    • 您无法更改布局。但是从父布局中删除 DockLayout 并添加新布局 const view
    • 但是如果我想要删除的布局没有父级(因为它是根)呢?
    猜你喜欢
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多