【问题标题】:How to navigate using nativescript-urlhandler如何使用 nativescript-urlhandler 进行导航
【发布时间】:2018-07-07 07:57:06
【问题描述】:

我有一个 javascript Nativescript 应用程序(即,没有 Angular、Vue 或 typescript),我想要做的是接收带有深层链接的文本到我的应用程序中,接收链接,然后导航到一个特定的页面。

我已经关注了 nativescript-urlhandler 文档,并且在 iOS 上可以接收 url,但我不知道一旦有了它该怎么办。也就是说,在我的 app.js 文件中,我有:

handleOpenURL(function(appURL) {
  console.log('Got the following appURL', appURL);
});

我想从这里做的通常是一个

frame.topmost().navigate(navigationOptions);

调用,但是我怎样才能获得结果页面的应用程序 viewModel,因为它是由 main-page.js 加载的(使用标准模板)。也就是说,这样的导航请求总是在已经设置了 viewModel 但尚未在 app.js 中设置的应用程序中发出。

我一直在寻找代码示例,但没有找到任何直接使用 NativeScript 的东西,所以我向 StackOverflow-verse 提出了这个问题。欢迎任何帮助或见解!

【问题讨论】:

  • 我一直在使用github.com/hypery2k/nativescript-urlhandler - 无法让它为我工作...你使用过这个插件吗?你能告诉我你做了什么吗?我正在使用nativescript vue ...我按照纯nativescript逐字的说明进行操作(所以想知道vue是否需要任何不同的东西?)
  • @Rob - 是的,我使用了 urlhandler 插件。诚然,这里有很多活动部件。您在什么平台上看到了哪些具体症状?
  • 谢谢@David。我最终设法让它工作。我正在生成的 plist 文件中编写我的配置......而不是 App_Resources 中的那个......它现在正在工作。今晚我将弄清楚如何将它连接到 nativeScripts vue 路由器

标签: nativescript


【解决方案1】:

我能够得到这个工作。是的,

frame.topmost().navigate(navigationOptions);

有效。我所做的是创建自己的 viewModel 实例并将其设置为绑定上下文,例如

handleOpenURL(function (appUrl) {

  var viewModel = createViewModel(); // create own instance of viewModel
  viewModel.helpReq = parseUrl(appUrl.toString()); // add data from URL to viewModel

    var navigationOptions = {
      moduleName: './views/help-req-page',
      context: { bindingContext: viewModel }
    }
    frame.topmost().navigate(navigationOptions);
}

其中 parseUrl() 可以预见地解析 url 并从各种组件创建一个对象。

如果我在目标页面上有一个空的操作栏,那么我会自动获得一个返回到我的应用程序的链接,该链接干净地关闭了目标页面。

我有这个在 iOS 上工作;我还没有尝试过安卓。

【讨论】:

    猜你喜欢
    • 2019-10-15
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多