问题标签 [observers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在不直接相互了解的对象上使用观察者模式
这是我的 Observer 和 Observable 接口
如果我有两个相互了解的班级,这些工作就有效,但是,我该如何处理如下情况。
- RootComposite(创建单词列表)
- WordListComposite(创建一个单词)
- 字对话框
现在,如果 RootCompoiste 需要了解 WordListComposite 的变化,我可以像下面这样实现它:
这将按预期工作。
但是 RootComposite 如何从 WordDialog 接收更新?
在这种情况下,最好的方法是什么?
activerecord - 为多个模型动态实例化一个 ActiveRecord 观察者
我目前正在尝试开发一个观察多个模型的插件/宝石。理想情况下,观察者应该只用一个单例方法自动实例化......
我最初的方法是定义包含在 AR 基础中的类方法:
然后使用它来检测在观察者中观察哪些模型:
我遇到的问题是在定义模型之前正在加载观察者,因此 ActiveRecord 没有后代,并且 MyObserver 不知道要观察哪些模型。
我的下一次尝试是破解 ActiveRecord::Base.observers 和 ActiveRecord::Base.instantiate_observers 但没有运气。
所以,就目前而言:
观察者已定义,但不知道要观察哪些模型。模型被定义并标记自己要被观察,但观察者已经被观察到。
有没有办法可以将观察者的加载延迟到定义模型之后,或者有人可以想出更好的方法来解决这个问题?
php - 在 Observer 方法中,如何告诉 Magento 在调度事件后不处理代码
我在结帐中有一些代码,我在会话中设置了一个键,如果该键在结帐中的任何地方设置为 false,我需要将它们发送回计费页面。我有它的代码,但我也没有任何通常在观察者之后运行的代码,因为它会调用第三方服务并返回错误,因为会话中缺少这个键
这是我的代码,我拥有我想要的一切,但我需要立即发生响应,并且在调度的事件行之后只触发发送回浏览器的响应。
ruby-on-rails-3 - 如何设置 MongoMapper 观察者
我正在尝试创建一些 mongo mapper 观察者。我为此找到了一个班级出口:http ://rubydoc.info/gems/danielharan-mongo_mapper/0.6.5/MongoMapper/Observer
问题是如何激活它们。
我创建了一个 app/observers/admin_observer.rb
现在的问题是如何激活它们?主动记录方式为:
但是 MongoMapper 没有 active_record。很天真,我尝试了 config.mongo_mapper.observers = :admin,但他们在 mongo_mapper 配置中没有观察者......
我不知道还能尝试什么,我的谷歌研究也没有给我任何线索。
c# - ASP.Net 中的观察者与代表
嗯,我在一个asp.net 3.5 站点工作。
我设置了这样的观察者:
我像这样使用观察者:
如果在o.Invoke()
;之前 例如,我将页面标题更改为“Hello”。而在“ NextButton_Click
”里面我把它设置为“再见”,NextButton_Click
完成后,标题又回到“你好”......
知道为什么吗?
ruby-on-rails - 如何禁用缓存清扫器以进行测试
我正在使用扫地机观看模型并使用 snogmetrics 进行一些记录:
我用清扫器而不是观察者来做这件事,因为 snogmetrics 需要会话才能正常运行。
然而,在测试时,snogmetrics 完全失败了
如何禁用扫描器进行单元测试?谢谢!
ruby-on-rails-3 - 我需要在观察者中访问 url_helper 方法,我该怎么做?
我有一个观察者被用来生成一些活动日志。
这些活动日志需要有指向实际站点活动的链接,以便在显示它们时很容易跳转到相应的页面。但是观察者不能访问 url_helpers (至少默认情况下)。
如果我不存储简单链接,那么我将不得不存储链接应该指向的页面的详细信息,然后再反序列化,这看起来很愚蠢。
如何在观察者中生成链接?
firefox-addon - Firefox 扩展 - 用户交互非活动通知仅触发一次
我正在开发一个 firefox 扩展,当浏览器处于非活动状态时需要通知(user-interaction-inactive
)。我为此注册了一个观察者,如下面的代码所示。
我的问题是观察者只通知我的分机一次。这意味着,当 Firefox 应用程序启动并且我将一些其他窗口置于最前面时,它会在短时间内通知我。但是当我再次将 Firefox 带到最前沿时,关闭生成的警报(如下所示),然后使用其他应用程序一段时间,此事件不再触发。
对此的任何帮助将不胜感激。
javascript - EmberJS:无法观察@each.property.another_property
在我的 EmberJS 应用程序中,有一些用例我想观察诸如“@each.score.votes”之类的东西,以计算总票数或返回排序列表等。
'@each.score' 是另一个 Ember 对象。
但是,任何试图观察 '@each.property.another_property' 的观察者(或计算属性)都不会触发。看到这个http://jsfiddle.net/jqTRu/2/
单击“更改投票”以更改投票,但不会重新计算 total_votes。但是,在添加一个人时,它确实会触发。
这是一个错误,还是有更明智的方法来实现我的意图?谢谢。
编辑:彼得指出这是一个错误。Christopher 的修复工作(如您在此处看到的http://jsfiddle.net/kazim/jqTRu/3/)。
events - 防止 Observer 方法被调用两次
我正在使用 Magento 1.5.1.0 和“mPAY24 支付网关”扩展。我有一个事件“sales_order_payment_pay”的观察者类,向物品的制造商发送通知电子邮件。
这个解决方案有一些奇怪的行为:
- 以注册用户身份登录时 - 按预期调用观察者方法
- 以访客用户身份结账时,“付款交易”(万事达卡,VISA)成功时触发“sales_order_payment_pay”事件,并在单击“返回按钮”返回 Magento 商店后第二次触发。因为这个行为电子邮件被发送两次。
有没有办法防止观察者方法被执行两次?
亲切的问候,伯蒂