我们正在寻求将NativeScript Angular集成到现有的iOS和Android应用程序中。我们希望我们的应用程序中具有现有菜单,以便能够路由到NS Angular应用程序的各个部分。 / home / contact,例如。嵌入NS Angular应用程序时,我们关注的问题之一是框架/供应商文件/等的大量开销,并且必须为多个嵌入式应用程序一遍又一遍地复制这些部分。我们宁愿有一个包含各种视图的NS Angular应用程序,并且能够基于承载嵌入的上一个Native应用程序中点击的初始链接,将这些视图作为初始视图进行导航。
任何人都已经实现了这一目标,可以分享一些示例或任何有用的信息吗?是否可以从本地应用程序向嵌入式NS Angular应用程序发送变量以进行路由?
在https://github.com/NativeScript/sample-ios-embedded/blob/master/HOWTO.md中 提到_runScript
- (void)activateNativeScript:(id)sender {
NSString *source = @"var application = require('application');"
"application.start({ moduleName: 'main-page' });";
[self _runScript: source];
}
我们是否能够通过_runScript发送路由,或者可能初始化各个部分,但仍保持相同的卖方bundle.js?
谢谢!
答案 0 :(得分:0)
我认为您无法从Angular上下文外部访问Angular。一种解决方法是,在启动RouterExtensions
时将appcomponent.ts
引用存储在全局变量中,
export class AppComponent {
constructor(private routerExtensions: RouterExtensions) {
(<any>global)._routerExtensions = routerExtensions;
}
}
您可以使用_runScript然后
NSString *source = @"global._routerExtensions.navigate([...])";
但是请确保您在_routerExtensions
初始化后访问它。另外,启动Angular应用程序的代码略有不同,如果再深入一点,您将在同一文档中找到它。
- (void)activateNativeScript:(id)sender {
NSString *source = @"var platform = require('nativescript-angular/platform');"
"var AppModule = require('./app.module' });"
"platform.platformNativeScriptDynamic().bootstrapModule(AppModule);";
[self _runScript: source];
}