我在网上尝试了很多其他帖子,这些帖子似乎与我的问题相同,但没有成功。
我有这个菜单:
<ul class="nav navbar-nav">
<li class="active"><a href="#Painel/1">Novas</a></li>
<li><a href="#Painel/2">Todas</a></li>
<li><a href="#Painel/3">Finalizadas</a></li>
<li><a href="#Painel/4">Pendentes</a></li>
</ul>
非常简单的导航栏。此路由设置:
module.config(["$routeProvider", "$locationProvider", function($routeProvider, $locationProvider)
{
//$locationProvider.html5Mode(true);
$routeProvider
.when('/Painel/:painelId/',
{
templateUrl : function(params)
{
return "/Painel/Index/" + params.painelId;
},
controller : 'painelController'
})
.otherwise(
{
redirectTo: "/Painel"
});
}]);
}
我的 MVC Controller :
public class PainelController : Controller
{
public ActionResult Index(int? id))
{
return View();
}
}
最后是我的 Angular Controller :
module.controller('painelController', ["$scope", "$routeParams", function ($scope, $routeParams)
{
debugger;
}]);
它的架构非常简单,但是 Angular 无限循环其 Controller 。我小心翼翼地将我的 templateUrl
与 /
相对设置,正如许多帖子建议的那样,但它不起作用。它可以将参数发送到 mvc Action,但随后它会启动循环,并在 Angular 的 Controller 调试器上永远停止。
我能做什么?
最佳答案
你的问题是 :painelId 不是可选的,因此你会无限地陷入 else() 重定向。使 :painelId 可选,例如
'/Painel/:painelId?/'
这应该可以解决您的问题。如果您没有使用支持可选参数的 Angular 版本,那么您将需要添加另一个 when() 来覆盖 '/Painel' 路由。
关于javascript - AngularJS使用mvc在spa模型中路由无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24255124/