如何使用nativescript-urlhandler

时间:2018-07-05 22:43:07

标签: nativescript

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

我已经关注了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。欢迎任何帮助或有识之士!

1 个答案:

答案 0 :(得分:0)

我能够做到这一点。是的

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上正在工作;我还没有尝试过Android。