我目前有一个现有的ASP MVC4应用程序,它从控制器返回视图(razor),并希望使用web api和angular js开始将应用程序转换为SPA(单页面应用程序)。我的问题是,我可以慢慢开始转换特定的视图/ URL以通过角度路由,并让其他视图/网址回调MVC应用程序中的遗留控制器,以呈现剃刀视图吗?例如,我有我的主角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和其他网址处理,以回调Web服务器到正确的mvc控制器并渲染剃刀视图。但是,对于我当前的配置,除了/ users之外的所有调用都返回空数据。有什么建议?谢谢。
答案 0 :(得分:1)
如果您决定部分申请是SPA而另一部分不适用于某个网址,则需要阻止AngularJS拦截网址更改。为此,当您渲染<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>
有关详细信息,请参阅location documentation。
此外,我认为您无法使用$route
或$location
服务为您想要在angularjs之外处理的网址执行导航。
整页刷新将始终导致为所有AngularJS SPA页面重新加载完整框架。