防止ng-include切换视图

时间:2015-04-13 08:42:42

标签: angularjs angularjs-directive

我试图避免在这里使用ui-router。我的应用程序的一部分需要使用ng-include替换几个视图。在每个视图中都将是一个指令,我正在尝试实现的是内部指令能够检测何时将其换出,并在继续之前提示用户。类似于在使用ui-router时捕获$ stateChangeStart事件的方式。我可以在我的指令中听一个$ destory事件,但似乎没有办法让我做一个'preventDefault'等价物:

    scope.$on("$destroy", function() {
      console.log('Caught destroy event');
      // Prevent default?
    });

Plunkr here.有没有人知道如何在不切换到使用ui-router的情况下这样做?

1 个答案:

答案 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; 
    }

see Plunkr