我有一个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。欢迎任何帮助或有识之士!
答案 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。