Angularjs:在应用程序配置通过后定义路由
是否可以在应用程序已经运行后添加和删除路由 我们有一个应用程序,它已经在浏览器中运行,当用户启动应用程序中的小部件时,我们会动态加载额外的脚本。(将其视为谷歌或苹果的应用商店,你点击一个应用,它就会用自己的脚本打开该应用) 现在,应用程序需要做的事情之一就是在应用程序中设置路由 当前路由:Angularjs:在应用程序配置通过后定义路由,angularjs,routing,Angularjs,Routing,是否可以在应用程序已经运行后添加和删除路由 我们有一个应用程序,它已经在浏览器中运行,当用户启动应用程序中的小部件时,我们会动态加载额外的脚本。(将其视为谷歌或苹果的应用商店,你点击一个应用,它就会用自己的脚本打开该应用) 现在,应用程序需要做的事情之一就是在应用程序中设置路由 当前路由: 应用商店:/apps 应用商店的应用程序详细信息:/apps/:appname 应用程序的url:/app/:appname 应用程序内的路由:/app/:appname/:…这可以是:/app/notes
- 应用商店:
/apps
- 应用商店的应用程序详细信息:
/apps/:appname
- 应用程序的url:
/app/:appname
- 应用程序内的路由:
这可以是:/app/:appname/:…
或/app/notes/create
或/app/contacts/edit
/app/contacts/new
/app/news/foreign/latest
每个应用程序必须是独立的,因此当应用程序的脚本加载时,应该加载路由。我们设法通过$controllerProvider.register
方法为控制器和指令执行此操作,以便在应用程序启动后将控制器添加到应用程序中
但是,$routeProvider
在应用程序的配置阶段之后不可用
我设法用肮脏的方式把它公之于众:
var myApp = angular.module('myApp', []);
myApp.config(function AppConfig($routeProvider) {
myApp.routeProvider = $routeProvider;
});
这样看来,我可以注册路由,但正如我所预料的,当您在浏览器中手动输入这些URL时,这些URL中的任何一个都不起作用,因为angular应用程序本身在运行时不知道这些路由
事实上,这些路由只有在触发/app/:appname
路由后才可用,该路由随后加载脚本并添加额外的路由
TL;医生:
- 应用程序启动后是否可以干净地注册新路由
- 当应用程序还不知道这些子例程时,有人知道直接链接到其中一个子例程的解决方案吗
我试图把一个JSFIDLE放在一起,但这是一个很难放在JSFIDLE中的概念。仔细考虑一下,以不同的方式解决了我们的问题,我才明白我的请求是不可能的
- 您无法链接到尚未注册的路由
- 之后可以注册路由,但不如在模块的配置部分使用routeProvider干净。