我尝试使用服务基于点击事件更新DOM。
具体来说,我尝试使用bootstrap的警报来提醒用户点击页面上的特定按钮。我希望能够拨打notify.createNotification("Saved successfully")
,告诉用户他们已成功保存。
我使用ui-router
并设法将通知抽象为(隔离范围)指令和随附的模板。 $ scope.createNotification()(来自click事件中)当前通知shows
,在我的应用程序的头部更新(所有其他视图继承此视图)。这是有效的,因为子视图继承$ scope属性。显然,虽然这种污染和滥用美元范围的继承并不理想,但我希望将其全部转移到服务中。
我尝试使用工厂来更新notification
对象,其中包含警报的状态信息,即显示:true / false,文本等。工厂的问题它只是从它被调用的地方返回,我需要能够更新父节点。
......我觉得我已经完成了这项工作的十分之九,但是过去的1/10真的令我感到困惑。
非常感谢任何帮助。
注意:我猜我也在寻找最佳实践'在这里,我的意思是范围污染工作,但它远非理想。感谢
答案 0 :(得分:1)
这可以使用pub / sub方法解决。
NotificationService
。对于呼叫者,它看起来像NotificationService.alert({text: '..', ...})
<notification-area>
的{{1}}组件,并显示从任何地方发送的通知。NotificationSerivce
本身应该实现pub / sub接口。使用NotificationService
(例如this one)甚至EventEmitter
的任何实现来提供angular.element
方法。