Angularjs 角度UI路由器模式删除父状态
我正在开发一个有ui路由器模块的angular应用程序。 当进入路由器的特定状态时,我会显示一个模式对话框,然后它会替换我的父视图。我希望保留父视图,并将模式显示为覆盖。有没有一种方法可以通过ui路由器实现 举个例子:Angularjs 角度UI路由器模式删除父状态,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在开发一个有ui路由器模块的angular应用程序。 当进入路由器的特定状态时,我会显示一个模式对话框,然后它会替换我的父视图。我希望保留父视图,并将模式显示为覆盖。有没有一种方法可以通过ui路由器实现 举个例子: $stateProvider.state("clients.list", { url: "/list", templateUrl: "app/client/templates/client-list.tpl.html", controller: modul
$stateProvider.state("clients.list", {
url: "/list",
templateUrl: "app/client/templates/client-list.tpl.html",
controller: moduleNamespace.clientListController,
resolve: {
clients: function (ClientService) {
return ClientService.all();
}
}
})
// This will replace "clients.list", and show the modal
// I want to just overlay the modal on top of "clients.list"
.state("clients.add", {
url: "/add",
onEnter: function ($stateParams, $rootScope, $state, ngDialog) {
ngDialog.open({
controller: moduleNamespace.clientAddController,
template: "app/client/templates/client-add.tpl.html"
});
$rootScope.$on("ngDialog.closed", function (e, $dialog)
if ($state.current.name !== "clients.list") $state.transitionTo("clients.list");
});
}
})
谢谢我认为合适的解决方案是:
$stateProvider.state("clients.list", {
url: "/list",
templateUrl: "app/client/templates/client-list.tpl.html",
controller: moduleNamespace.clientListController,
resolve: {
clients: function (ClientService) {
return ClientService.all();
}
}
})
.state("clients.list.add", {
url: "^/add",
})
通过添加一个^
,我将重要的事情变成了绝对的/add
。大多数人只会执行/list/add
,因为嵌套状态的默认行为是将它们添加到一起,^
绕过了这一点。您还需要在状态上加载样式,使其成为“模态”,并位于其他内容之上
然后在clients.list
中说明您需要更新/client list.tpl.html
以拥有一个ng视图
,该视图将在父视图的顶部设置样式
如果需要,我可以创建一个plunkr,但如果我这样做,我基本上是在为您实现一切。为什么您希望这是一个状态?你想通过url打开它吗?我的另一个问题是,你是否希望它显示在“列表”视图的顶部?嗨@Nix,是的,我希望模式视图显示在列表视图的顶部。此外,我还需要通过urlAhh打开该模态视图,因此对模态使用嵌套视图。我不知道url^,让我试试看会出现什么。不需要plunkr:)。谢谢我的问题可能类似(甚至可能是相同的??)。我概括了我的代码,并包含了一个完整的演示。如果你有兴趣去看看,那就太棒了!