将AngularJS 1.2集成到现有MVC站点中



我目前有一个现有的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页面的完整框架重新加载。

最新更新