我正在使用angular ui router打开模态。
我有两种状态:
int doubled_size = get_doubled_size(....);
'modal.first'
我想要的是通过点击按钮关闭第一个模态并将状态更改为'modal.second'
。
问题是我只能关闭模态或更改状态(但第一个模态仍然打开)。
这里是州定义:
'modal.second'
第二个模态定义完全相同(州名$stateProvider
.state('modal.first', {
url: '/first',
onEnter: function ($state, $modal) {
$modal.open({
templateUrl: 'some_url',
controller: 'FirstCtrl',
resolve: {
//...
}
}
}).result.finally(function () {
$state.go('^');
});
}
})
和网址modal.second
)。
我正试图关闭模态(并改变状态),如下所示:
(/second
)
FirstController
但是这没用。我只能选择一个 - 或$scope.goSecond = function () {
$state.go('modal.second', $stateParams);
$modalInstance.close();
};
或$state.go(...)
。
我想也许我应该更加关注$modalInstance.close()
块。但仍然没有想法。感谢。
使用模式链接到官方常见问题解答:click
UPDATE 我不能在没有任何语句的情况下最终更改状态,因为我只需要通过单击按钮来更改状态(并在任何其他情况下使.finally()
更新)。 / p>
答案 0 :(得分:3)
您可以定义包含modalInstance的服务,如果再次打开则关闭它。
angular.module('someModule')
.service("singleModal", function($modal) {
this.modalInstance = null;
this.open = function(options) {
if (this.modalInstance) {
this.modalInstance.close();
}
this.modalInstance = $modal.open(options);
return this.modalInstance;
};
})
您可以看到简单的服务示例(没有ui bootstrap)here