Angular中的全局保存按钮

时间:2014-12-03 22:14:48

标签: javascript angularjs

我正在Angular编写一个业务线应用程序,我遇到了一个我无法找到一个很好的解决方案的方案。

我想要显示一个横幅,指出用户有未保存的更改,并且他可以保存它们。所以在我的index.html中,我有以下标记(使用bootstrap):

<div class="alert alert-info" role="alert" style="margin: 20px;">
    <button class="btn btn-info" ng-click="<CurrentController.Save()>" ng-show="<HasChanges>">Save</button>
    <span>You have unsaved changes. Use the button here to save them.</span>
</div>

现在,我有一个用于当前视图的控制器和一个全局appController。

使用原型继承,我的控制器包含跟踪用户所做更改的功能,并且能够执行实现所需功能所需的任何操作。

我的问题是:

由于我的rootScope不了解子控制器,我需要做些什么才能在上面的代码中绑定ng-click和ng-show。换句话说,index.html将如何了解当前活动的控制器?

我想过broadcast / emit,但不知怎的,这对我来说似乎并不纯洁。我也想让儿童控制器注册&#39;使用$ rootScope本身,但如果我引入错误,这可能会导致我保存在旧控制器中。

最佳做法是什么?我的设计是否存在根本性的问题?

1 个答案:

答案 0 :(得分:-1)

任何形式的

$dirty都会告诉您表单是否脏了

在表单控制器中,您可以查看任何表单更改并在服务中存储布尔值,请记得在您知道表单脏了后立即清除手表

当用户尝试导航到另一个视图时会触发

$locationChangeStart

$locationChangeStart事件中注入服务,并检查布尔值是否为true。

请确保在$locationChangeSuccess

时将布尔值清除为false或undefined