我是AngularJS的新手。只想用$ routeProvider试用相对的URL。
以下是该方案:
我有一个“编辑”页面,该页面的ASP.NET MVC链接将是:
http://localhost/Workflow/Edit
因此ASP.NET MVC Controller是“WorkflowController”,动作是“编辑”。对于Partials,我有Controller操作,每个都返回一个像这样的部分视图:
public ActionResult WorkflowTransition()
{
return PartialView("WorkflowTransition");
}
public ActionResult WorkflowTransitionApprovers()
{
return PartialView("WorkflowTransitionApprovers");
}
以下是AngularJS模块配置 - 注意:为每条路线调用PartialView(如上所述)(这可能不正确):
$routeProvider.when('Workflow/WorkflowTransition', {
templateUrl: '/Workflow/WorkflowTransition',
controller: 'transitionCtrl',
});
$routeProvider.when('Workflow/WorkflowTransitionApprovers', {
templateUrl: '/Workflow/WorkflowTransitionApprovers',
controller: 'approversCtrl'
$routeProvider.otherwise({
redirectTo: '/'
});
注意:我有不指定以下任一项:
$ locationProvider.html5Mode(假);
OR
$ locationProvider.html5Mode(假).hashPrefix( '!');
href链接的指定方式如下:
<a href="#/Workflow/WorkflowTransition">{{workflow.Identifier}}</a>
这会生成以下形式的链接:
http://localhost/Workflow/Edit#/Workflow/WorkflowTransition
这显然是错误的(点击链接没有做任何事情可能因为浏览器试图导航到哈希),所以我尝试了领先的'/',但也没有运气:
<a href="/#/Workflow/WorkflowTransition">{{workflow.Identifier}}</a>
如果我直接导航部分即http://localhost/Workflow/WorkflowTransition
,浏览器会将html呈现为原样(以及angularjs花括号{{}})。
我的问题是:AngularJS如何对待'#'或'#!'在确定相对URL时?对于例如这条路线(假设我从锚标记中的URL中删除/编辑部分):
$routeProvider.when('Workflow/WorkflowTransition',
匹配网址:
http://localhost/Workflow/#WorkflowTransition
?
是否从URL中删除了'#',然后根据$ routeProvider.when()中的URL模式进行检查?
有人可以建议相关网址的正确路线吗?
答案 0 :(得分:3)
根据我的观察,匹配路线时必须删除散列。我有像
这样的链接<a href="#Objects">
生成网址
http://localhost:55033/#/Objects
我的路线设置
$routeProvider.when("/Objects", {
templateUrl: "objects.html",
controller: ObjectCtrl
});
这可以按预期工作,拉出正确的部分。请注意,在这种情况下,我不是通过ASP.NET MVC控制器渲染部分内容。相反,我将objects.html作为普通的html文件放在一边,我在href中使用哈希,因此ASP.NET MVC路由不会启动。
答案 1 :(得分:1)
Routeprovide应设置如下。
$routeProvider.when('/Workflow/WorkflowTransition', {
templateUrl: "WorkflowTransition.html",
controller: WorkflowTransitionCtrl
});
和URL应输入以下格式。
http://localhost/#/Workflow/WorkflowTransition ?