【发布时间】:2019-12-13 07:12:04
【问题描述】:
我在一个最初使用传统导航(HTTP GET 和 POST)并且没有 AJAX/Fetch 功能的 ASP.NET MVC 应用程序上工作。随着时间的推移,我们引入了 AngularJS 以利用双向绑定和其他 UI 改进,但每个页面仍然是它自己独立的应用程序/模块。也就是说,我们不使用 AngularJS 路由,而是当页面加载时,它是一个传统的 GET 请求。这意味着 angular.js 每次都加载和引导,页面本身是一个独立的模块和控制器。
我们想开始使用 AngularJS 的路由来使我们应用程序的某些部分充当 SPA,最终目标是使整个站点成为一个使用 AngularJS 路由的 SPA。以应用程序的规模和我们的小团队,一次完成所有工作是不可行的,所以我们需要逐步完成。
是否可以让某些 URL 使用 AngularJS 的路由,但让其他 URL 进行完整的页面加载 (GET)?例如:
+------------------------------+-------------------------------+-------------------+
| Current URL | URL to navigate to | Navigation type |
+------------------------------+-------------------------------+-------------------+
| site.com/employee/edit/42 | site.com/employee/contacts/42 | AngularJS routing |
| site.com/employee/edit/42 | site.com/branch/settings/123 | Traditional GET |
| site.com/branch/settings/123 | site.com/employee/edit/42 | Traditional GET |
+------------------------------+-------------------------------+-------------------+
软件同一“部分”内的页面(在本例中为/employee/*)将属于同一个 AngularJS 模块,并且在该模块内的页面之间导航将使用 AngularJS 路由。所有其他导航将依赖于常规 GET 请求。
【问题讨论】:
-
你运行的是什么网络服务器?
-
@MichaelNovello IIS 8
-
尤其是在混合环境中,我不会选择
html5Mode,而只是使用哈希来创建 angularjs 路由。在您的示例中,我将用于任何 angula 路线site.com/#employee/edit/42并且所有其他请求应该保持不变 - 一旦您转换了所有代码,您就可以考虑$locationProvider.html5Mode(true)但这将是我最后的担忧
标签: angularjs angularjs-routing