我试图避免在这里使用ui-router。我的应用程序的一部分需要使用ng-include替换几个视图。在每个视图中都将是一个指令,我正在尝试实现的是内部指令能够检测何时将其换出,并在继续之前提示用户。类似于在使用ui-router时捕获$ stateChangeStart事件的方式。我可以在我的指令中听一个$ destory事件,但似乎没有办法让我做一个'preventDefault'等价物:
scope.$on("$destroy", function() {
console.log('Caught destroy event');
// Prevent default?
});
Plunkr here.有没有人知道如何在不切换到使用ui-router的情况下这样做?
答案 0 :(得分:1)
据我所知,你不能在$ destroy事件上使用event.preventDefault()。您可以为选择添加不同的模型,并使用ng-change来显示警报。如果用户点击“确定”,您可以离开,否则只需返回。
例如:
<select ng-model="selectedTemplate" ng-options="t.name for t in templates" ng-change="onTemplateChange(selectedTemplate)">
和
$scope.template = $scope.templates[0];
$scope.selectedTemplate = $scope.template
$scope.onTemplateChange = function(template) {
// show an alert and on success change the template
// TODO: implement alert
// if OK, change the template
$scope.template = template;
}