4

应用程序已经运行后是否可以添加和删除路由?

我们有一个应用程序,它已经在浏览器中运行,当用户在应用程序中启动一个小部件时,我们会动态加载额外的脚本。(将其视为谷歌或苹果的应用商店,然后您单击一个应用程序,它会打开该应用程序,并带有它自己的脚本)。

现在,应用程序需要做的其中一件事情就是在应用程序内部拥有路由。

目前的路线:

  • 应用商店:/apps
  • 应用商店的应用详情:/apps/:appname
  • 应用程序的网址:/app/:appname
  • 应用程序中的路由:/app/:appname/:...这可能是:/app/notes/create/app/contacts/edit/app/contacts/new

每个app可以有不同的路由,不一定在同一个层级,可以是/app/news/foreign/latest

每个应用程序必须是独立的,因此应该在应用程序的脚本加载时加载路由。我们设法通过在$controllerProvider.register应用程序已经启动后将控制器添加到应用程序的方法来为控制器和指令执行此操作。

但是在$routeProvider应用程序的配置阶段之后不可用。

我设法以一种肮脏的方式将其公开:

var myApp = angular.module('myApp', []);
myApp.config(function AppConfig($routeProvider) {
    myApp.routeProvider = $routeProvider;
});

这样看起来我可以注册路由,但正如我所料,当您在浏览器中手动输入这些 url 时,它们中的任何一个都不起作用,因为 angular 应用程序本身在运行时不知道这些路由。

事实上,这些路由只有在/app/:appname路由触发后才可用,然后加载脚本并添加额外的路由。

TL;博士:

  • 应用启动后是否可以干净地注册新路线
  • 有没有人知道直接链接到这些子路由之一的解决方案,当应用程序“还”不知道它们时?

我正在尝试将 jsfiddle 放在一起,但放入 jsfiddle 是一个很难的概念。

4

1 回答 1

1

更多地考虑这一点,以不同的方式解决了我们的问题,我很清楚我的要求是不可能的。

  • 您无法链接到尚未注册的路线
  • 之后可以注册路由,但不如在模块的配置部分使用 routeProvider 干净。
于 2014-11-27T20:39:56.687 回答