【问题标题】:Handling page or tab change in angualajs处理angualajs中的页面或选项卡更改
【发布时间】:2016-03-26 14:43:04
【问题描述】:

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

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

【问题讨论】:

  • 请更具体一些。完全不清楚你需要做什么,你的标签是如何工作的,或者dirty page 甚至意味着什么。还应包括对您找到的解决方案的引用以及它们为什么不起作用

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


【解决方案1】:

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

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

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

ng-disabled="!myForm.$valid"

编辑

您可以查看这篇文章以使用服务/工厂方法: https://stackoverflow.com/a/25459689/5138917

【讨论】:

  • 在使用服务或指令时是否可以不对表单名称进行硬编码?
  • 嗨,伙计!我不知道:/ ...但你可以在你的应用程序中应用一些个人命名约定来处理这个问题:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 2019-03-17
    • 1970-01-01
    • 2015-12-01
    相关资源
    最近更新 更多