【问题标题】:Integrating AngularJS 1.2 into existing MVC site将 AngularJS 1.2 集成到现有的 MVC 站点中
【发布时间】:2013-11-26 04:16:44
【问题描述】:

我目前有一个现有的 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 之外的所有调用都会返回空数据。有什么建议么?谢谢。

【问题讨论】:

    标签: asp.net-mvc angularjs


    【解决方案1】:

    如果您决定应用程序的一部分是 SPA 而另一个不是针对某个 url,那么您需要阻止 AngularJS 拦截 url 更改。为此,当您渲染 <a> 标签时,请使用以下方法之一来忽略 angularjs 路由

    • 包含目标元素的链接。示例:<a href="/ext/link?a=b" target="_self">link</a>
    • 指向不同域的绝对链接。示例:<a href="http://angularjs.org/">link</a>
    • 以“/”开头的链接在定义 base 时指向不同的基本路径。示例:<a href="/not-my-base/link">link</a>

    有关详细信息,请参阅location documentation

    另外,我认为您不能使用 $route$location 服务对要在 angularjs 之外处理的网址执行导航。

    完整页面刷新总是会导致所有 AngularJS SPA 页面的完整框架重新加载。

    【讨论】:

      猜你喜欢
      • 2011-02-10
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多