我正在建立一个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: "/" });
});
答案 0 :(得分:3)
你有两个不同的场景,你的服务器路由和你的客户端路由是非常明显的,但是如果你直接点击浏览器你会点击服务器路由“/”或者我们很容易被这两种路由机制搞糊涂了。 “/等级”。
默认情况下,客户端会在路线上显示#,在这种情况下,您主页的网址可能类似
localhost /#!/ 或 localhost /#!/ rating
如果您打算使用$location进行重定向尝试,可以使用$ location.path('/ rating')并在按钮上处理。
基本上根据你的例子,如果你想直接从浏览器点击客户端路由尝试使用localhost /#!/ rating而不是localhost / rating