【发布时间】:2014-05-05 19:37:33
【问题描述】:
我正在使用 UI-Router 和 angular bootstrap-ui。我有一个状态设置来创建模式“onEnter”。当我尝试关闭模式“onExit”时,我现在遇到了问题。这是基本状态。当输入“items.detail”时它将打开一个模态,当该模态关闭或关闭时它将转换为“items”。
.state('items.detail', {
url: '/{id}',
onEnter: function ($stateParams, $state, $modal, $resource) {
var modalInstance = $modal.open({
templateUrl: 'views/modal/item-detail.html',
controller: 'itemDetailCtrl'
})
.result.then(function () {
$state.transitionTo('items');
}, function () {
$state.transitionTo('items');
});
}
})
我已经尝试过像这样使用 onExit 处理程序。但是无法从该处理程序访问 modalInstance 或模式所在的范围。我尝试注入的所有内容都未定义。
.state('items.detail', {
url: '/{id}',
onEnter: function ($stateParams, $state, $modal, $resource) {
var modalInstance = $modal.open({
templateUrl: 'views/modal/item-detail.html',
controller: 'itemDetailCtrl'
})
.result.then(function () {
$state.transitionTo('items');
}, function () {
$state.transitionTo('items');
});
},
onExit: function ($scope) {
controller: function ($scope, $modalInstance, $modal) {
$modalInstance.dismiss();
};
}
})
我尝试在模态控制器中监听状态变化。
$scope.$on('$stateChangeStart', function() {
$modalInstance.dismiss();
});
我在 $scope.$on 和 $rootScope.$on 上都试过了,这两种方法都有效,但每次我在任何状态之间转换时都会调用它们。但是,这仅在我打开模式后才会发生。
如果最后一点不清楚...当我刷新我的 Angular 应用程序时,我可以在所有其他状态之间转换而不会调用此侦听器事件,但是在我打开该模式后,我的所有状态更改都会被该侦听器调用,即使在模态关闭之后。
【问题讨论】:
标签: javascript angularjs