处理angualajs中的页面或选项卡更改

时间:2016-03-26 14:43:05

标签: angularjs angularjs-directive angularjs-scope angular-ui-router

如何在angularjs 1.5应用程序中移动另一个页面或选项卡时检查未保存的页面更改。 其中一种方法是使用指令但是如何将相关的命名形式传递给指令而不是使用硬编码解决方案?

我尝试使用下面提到的服务方法,但我的嵌套视图控制器无法访问表单名称。我将$ scope.myForm视为未定义。

2 个答案:

答案 0 :(得分:3)

您可以使用ng-route的事件$locationChangeStart或ui-router的$stateChangeStart处理页面更改(执行您想要的逻辑):

$scope.$on('$locationChangeStart', function(event) {
    if ($scope.myForm.$invalid) {
       event.preventDefault();
    }
});

要更改标签,您可以使用类似的方式或您喜欢的Watever方法来禁用标签

ng-disabled="!myForm.$valid"

编辑

您可以查看此帖子以使用服务/工厂方法: https://stackoverflow.com/a/25459689/5138917

答案 1 :(得分:0)

下面的模块似乎对我有用 https://github.com/facultymatt/angular-unsavedChanges