我目前有一个现有的ASP MVC4应用程序,它从控制器返回视图(剃刀),并希望开始使用web api和angular js将该应用程序转换为SPA(单页应用程序)。我的问题是,我是否可以慢慢地开始将特定的视图/URL转换为按角度路由,并让其他视图/URL回调到MVC应用程序中渲染剃刀视图的遗留控制器?例如,我有一个主要的angular js文件,说明以下
window.EcentralSPA = angular.module('EcentralSPA', ['ngRoute']);
EcentralSPA.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/users', {
templateUrl: 'app/views/users.html',
controller: 'UsersController'
});
}]);
EcentralSPA.controller('UsersController', ['$scope', function ($scope) {
//TODO
}]);
基本上,我只希望/users的url由angular处理,其余的url回调到web服务器的正确mvc控制器,并渲染回剃刀视图。然而,在我目前的配置中,除/users之外的所有调用都返回空数据。有什么建议吗?非常感谢。
如果您决定应用程序的一部分是SPA,而另一部分不适用于某些url,则需要停止AngularJS拦截url更改。为此,当您渲染<a>
标签时,请使用以下方法之一来忽略angularjs路由
- 包含目标元素的链接。示例:
<a href="/ext/link?a=b" target="_self">link</a>
- 指向不同域的绝对链接。示例:
<a href="http://angularjs.org/">link</a>
- 以"/"开头的链接在定义基时会导致不同的基路径。示例:
<a href="/not-my-base/link">link</a>
有关更多详细信息,请参阅位置文档。
此外,我不认为您可以使用$route
或$location
服务对您想要在angularjs之外处理的url执行导航。
完整页面刷新将始终导致所有AngularJS SPA页面的完整框架重新加载。