角度路由与MVC路由

时间:2015-04-08 13:22:40

标签: asp.net-mvc angularjs

我正在建立一个MVC网络应用程序。有两个主要部分将用作单页面应用程序。使用两种不同的MVC布局,一种用于每种不同的场景(一种是侧面有菜单,一种是全屏)。长话短说 - 我还有2个不同的Angular模块,每个模块的范围都与使用的主要布局相同。

问题: 使用Angular - 使用routeProvider,是相对于Angular应用程序上下文的promise或者作为整体的站点url引用的路径?所以我重新阅读routing上的Angular教程,我仍然不确定,所以我在这里发布了这个问题。
换句话说,当浏览器选择了一个url并且该url的根引入了一个新的Angular模块时,angular会将其基础视为新url或站点的根URL吗?基本上,这是一个关于处理多个模块/应用程序时的路由问题。

设置第二个模块时,我的MVC控制器工作正常,但是当我为其角度控制器设置路径时,MVC视图会显示但不会显示我定义的Angular视图。请参阅下面的代码段。

MVC路由是:/ rating(您在浏览器地址窗口中看到的内容)
Angular 不正确的路线:

var app = angular.module('ratingIndex', ['ngRoute']);

app.config(function ($routeProvider) {
    $routeProvider.when("/rating", {
        controller: "ratingController",
        templateUrl: "templates/ratingView.html"
    });

    $routeProvider.otherwise({ redirectTo: "/" });
});

MVC路由是:/ rating(您在浏览器地址窗口中看到的内容)
Angular 正确路线:

var app = angular.module('ratingIndex', ['ngRoute']);

app.config(function ($routeProvider) {
    $routeProvider.when("/", {
        controller: "ratingController",
        templateUrl: "templates/ratingView.html"
    });

    $routeProvider.otherwise({ redirectTo: "/" });
});

1 个答案:

答案 0 :(得分:3)

你有两个不同的场景,你的服务器路由和你的客户端路由是非常明显的,但是如果你直接点击浏览器你会点击服务器路由“/”或者我们很容易被这两种路由机制搞糊涂了。 “/等级”。

默认情况下,客户端

会在路线上显示#,在这种情况下,您主页的网址可能类似

localhost /#!/ localhost /#!/ rating

如果您打算使用$location进行重定向尝试,可以使用$ location.path('/ rating')并在按钮上处理。

基本上根据你的例子,如果你想直接从浏览器点击客户端路由尝试使用localhost /#!/ rating而不是localhost / rating