javascript - Angular 中的全局保存按钮

标签 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>

现在,我有一个用于当前 View 的 Controller 和一个全局 appController。

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

我的问题是:

由于我的 rootScope 不知道子 Controller ,我需要做什么才能在上面的代码中绑定(bind) ng-click 和 ng-show 。换句话说,index.html 如何知道当前事件的 Controller ?

我考虑过broadcast/emit,但不知怎的,这对我来说似乎并不纯粹。我还考虑让子 Controller 在 $rootScope 中“注册”自己,但是如果我引入错误,这可能会导致我保存在旧 Controller 中。

对此的最佳实践是什么?我的设计有什么根本性的错误吗?

最佳答案

任何表单的

$dirty 都会告诉你该表单是否脏

在表单 Controller 中,您可以监视任何表单更改并在服务中存储 bool 值,记住一旦知道表单脏了就清除 watch

$locationChangeStart 当用户尝试导航到另一个 View 时触发

$locationChangeStart 事件中注入(inject)服务并检查 bool 值是否为 true 或 false。

请确保在 $locationChangeSuccess 时将 bool 值清除为 false 或未定义

关于javascript - Angular 中的全局保存按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27282723/

相关文章:

javascript - 使用 chartjs 在圆环图中标记问题

javascript - 根据 Angular 范围值更改 CSS

javascript - 如何在 Mongoose 中排除 "upsert-ed"字段?

javascript - 为什么每次发送请求时刷新访问 token 是一个坏主意?

angularjs - ngClass 指令 : Can I use multiple expressions to add multiple classes?

javascript - 点击关闭音量

javascript - 有 Angular ,谷歌地图。 map 未加载模板

javascript - 使用 Node.JS 作为 REST 服务器和 Web 服务器

javascript - 服务调用后删除缓存

javascript - 如何使用带有复选框值的 ng-model?