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干净。

很抱歉,我在启动后使用了类似的方法注册路由,但给出的答案没有帮助,也不适用于深度链接。当你链接到这些动态路由中的一个时,应用程序启动并且不知道该路由,因此它不工作,并将你抛出到另一个语句(在我们的例子中是登录页面)你能给我们一个线索吗?在应用程序运行后,我们如何注册一个新路由?