我正在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本身,但如果我引入错误,这可能会导致我保存在旧控制器中。
最佳做法是什么?我的设计是否存在根本性的问题?
答案 0 :(得分:-1)
$dirty
都会告诉您表单是否脏了
在表单控制器中,您可以查看任何表单更改并在服务中存储布尔值,请记得在您知道表单脏了后立即清除手表
当用户尝试导航到另一个视图时会触发 $locationChangeStart
在$locationChangeStart
事件中注入服务,并检查布尔值是否为true。
请确保在$locationChangeSuccess