使用服务基于click事件更新DOM

时间:2017-03-02 16:26:36

标签: javascript angularjs twitter-bootstrap mean-stack

我尝试使用服务基于点击事件更新DOM。

具体来说,我尝试使用bootstrap的警报来提醒用户点击页面上的特定按钮。我希望能够拨打notify.createNotification("Saved successfully"),告诉用户他们已成功保存。

我使用ui-router并设法将通知抽象为(隔离范围)指令和随附的模板。 $ scope.createNotification()(来自click事件中)当前通知shows,在我的应用程序的头部更新(所有其他视图继承此视图)。这是有效的,因为子视图继承$ scope属性。显然,虽然这种污染和滥用美元范围的继承并不理想,但我希望将其全部转移到服务中。

我尝试使用工厂来更新notification对象,其中包含警报的状态信息,即显示:true / false,文本等。工厂的问题它只是从它被调用的地方返回,我需要能够更新父节点。

......我觉得我已经完成了这项工作的十分之九,但是过去的1/10真的令我感到困惑。

非常感谢任何帮助。

注意:我猜我也在寻找最佳实践'在这里,我的意思是范围污染工作,但它远非理想。感谢

1 个答案:

答案 0 :(得分:1)

这可以使用pub / sub方法解决。

  1. 创建用于发送通知的NotificationService。对于呼叫者,它看起来像NotificationService.alert({text: '..', ...})
  2. 创建订阅<notification-area>的{​​{1}}组件,并显示从任何地方发送的通知。
  3. NotificationSerivce本身应该实现pub / sub接口。使用NotificationService(例如this one)甚至EventEmitter的任何实现来提供angular.element方法。