Angularjs 使用角度ui路由器视图和角度ui引导模式对话框
我当前的代码:Angularjs 使用角度ui路由器视图和角度ui引导模式对话框,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我当前的代码: function config($stateProvider) { $stateProvider.state('someState', { views: { '': { templateUrl: 'my_root_template.html' }, 'someNestedView@someState': { templateUrl: 'some_nested_view.html' }
function config($stateProvider) {
$stateProvider.state('someState', {
views: {
'': {
templateUrl: 'my_root_template.html'
},
'someNestedView@someState': {
templateUrl: 'some_nested_view.html'
}
}
})
}
现在我只需从一个控制器打开模态对话框
function SomeControler(ModalService) {
...
return ModalService.openModal({
templateUrl: 'modal_dialog_template_where_root_template_will_be_injected.html',
controller: 'ModalController'
});
...
}
并在处理模态本身的控制器中进行状态转换
function ModalController($state) {
$state.go('someState')
}
我实际上不想做的事
我想要的是在我的主菜单模板中使用ui sref=“someState”
打开模态,并在模态对话框中继续使用这种方法-使用someState
的子状态动态更改模态对话框的内容。所以,第一部分是可以实现的
function config($stateProvider) {
$stateProvider.state('someState', {
onEnter: onSomeStateEnter
})
}
function onSomeStateEnter() {
ModalService.openModal({
templateUrl: 'modal_dialog_template_where_root_template_will_be_injected.html',
controller: 'ModalController'
});
}
但是当我尝试添加一些视图时
function config($stateProvider) {
$stateProvider.state('someState', {
onEnter: onSomeStateEnter,
views: {
'': {
templateUrl: 'my_root_template.html'
},
'someNestedView@someState': {
templateUrl: 'some_nested_view.html'
}
}
})
}
它只打开模式对话框模板,但视图被注入到主页面(还有一个是空的
)
我做错了什么?有什么想法吗?
提前谢谢你 是否确实要使用状态打开对话框。如果您使用的是dialog,那只是因为您不想重定向用户以执行特定操作。我认为最好是在$scope中公开一个打开对话框的函数(如果你想在任何地方都打开它,就在$rootScope中)。是的,我非常确定我想使用state打开对话框,“在$scope中公开”是我现在要做的事情,我想摆脱它。这个例子只是抽象和简化的东西,实际上,在控制器中将打开模态对话框的逻辑与业务逻辑混合在一起是一件非常痛苦的事情,我需要设法把它“隐藏起来”。模态对话框内的状态转换逻辑也是如此。我的想法是让它对设计模板的人透明(因为他们是创建控制器和创建模板的不同的人),我不能把它作为我问题的答案——我不太确定我是对的,但在谷歌搜索失败后,我发现现在这是不可能的。最活跃的ui引导贡献者之一已经在ui路由器库中创建了问题跟踪器。据我所知,这就是为什么我不能注入我的观点的原因——没有在哪里注入的观点。打开模式是异步操作,在我尝试注入时还没有解决。