问题标签 [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.

0 投票
1 回答
180 浏览

java - 在不直接相互了解的对象上使用观察者模式

这是我的 Observer 和 Observable 接口

如果我有两个相互了解的班级,这些工作就有效,但是,我该如何处理如下情况。

  • RootComposite(创建单词列表)
  • WordListComposite(创建一个单词)
    • 字对话框

现在,如果 RootCompoiste 需要了解 WordListComposite 的变化,我可以像下面这样实现它:

这将按预期工作。

但是 RootComposite 如何从 WordDialog 接收更新?

在这种情况下,最好的方法是什么?

0 投票
1 回答
813 浏览

activerecord - 为多个模型动态实例化一个 ActiveRecord 观察者

我目前正在尝试开发一个观察多个模型的插件/宝石。理想情况下,观察者应该只用一个单例方法自动实例化......

我最初的方法是定义包含在 AR 基础中的类方法:

然后使用它来检测在观察者中观察哪些模型:

我遇到的问题是在定义模型之前正在加载观察者,因此 ActiveRecord 没有后代,并且 MyObserver 不知道要观察哪些模型。

我的下一次尝试是破解 ActiveRecord::Base.observers 和 ActiveRecord::Base.instantiate_observers 但没有运气。

所以,就目前而言:

观察者已定义,但不知道要观察哪些模型。模型被定义并标记自己要被观察,但观察者已经被观察到。

有没有办法可以将观察者的加载延迟到定义模型之后,或者有人可以想出更好的方法来解决这个问题?

0 投票
1 回答
10983 浏览

php - 在 Observer 方法中,如何告诉 Magento 在调度事件后不处理代码

我在结帐中有一些代码,我在会话中设置了一个键,如果该键在结帐中的任何地方设置为 false,我需要将它们发送回计费页面。我有它的代码,但我也没有任何通常在观察者之后运行的代码,因为它会调用第三方服务并返回错误,因为会话中缺少这个键

这是我的代码,我拥有我想要的一切,但我需要立即发生响应,并且在调度的事件行之后只触发发送回浏览器的响应。

0 投票
1 回答
376 浏览

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 配置中没有观察者......

我不知道还能尝试什么,我的谷歌研究也没有给我任何线索。

0 投票
1 回答
337 浏览

c# - ASP.Net 中的观察者与代表

嗯,我在一个asp.net 3.5 站点工作。

我设置了这样的观察者:

我像这样使用观察者:

如果在o.Invoke();之前 例如,我将页面标题更改为“Hello”。而在“ NextButton_Click”里面我把它设置为“再见”,NextButton_Click完成后,标题又回到“你好”......

知道为什么吗?

0 投票
2 回答
441 浏览

ruby-on-rails - 如何禁用缓存清扫器以进行测试

我正在使用扫地机观看模型并使用 snogmetrics 进行一些记录:

我用清扫器而不是观察者来做这件事,因为 snogmetrics 需要会话才能正常运行。

然而,在测试时,snogmetrics 完全失败了

如何禁用扫描器进行单元测试?谢谢!

0 投票
1 回答
103 浏览

ruby-on-rails-3 - 我需要在观察者中访问 url_helper 方法,我该怎么做?

我有一个观察者被用来生成一些活动日志。

这些活动日志需要有指向实际站点活动的链接,以便在显示它们时很容易跳转到相应的页面。但是观察者不能访问 url_helpers (至少默认情况下)。

如果我不存储简单链接,那么我将不得不存储链接应该指向的页面的详细信息,然后再反序列化,这看起来很愚蠢。

如何在观察者中生成链接?

0 投票
1 回答
224 浏览

firefox-addon - Firefox 扩展 - 用户交互非活动通知仅触发一次

我正在开发一个 firefox 扩展,当浏览器处于非活动状态时需要通知(user-interaction-inactive)。我为此注册了一个观察者,如下面的代码所示。

我的问题是观察者只通知我的分机一次。这意味着,当 Firefox 应用程序启动并且我将一些其他窗口置于最前面时,它会在短时间内通知我。但是当我再次将 Firefox 带到最前沿时,关闭生成的警报(如下所示),然后使用其他应用程序一段时间,此事件不再触发。

对此的任何帮助将不胜感激。

0 投票
2 回答
648 浏览

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/)。

0 投票
1 回答
2548 浏览

events - 防止 Observer 方法被调用两次

我正在使用 Magento 1.5.1.0 和“mPAY24 支付网关”扩展。我有一个事件“sales_order_payment_pay”的观察者类,向物品的制造商发送通知电子邮件。

这个解决方案有一些奇怪的行为:

  • 以注册用户身份登录时 - 按预期调用观察者方法
  • 以访客用户身份结账时,“付款交易”(万事达卡,VISA)成功时触发“sales_order_payment_pay”事件,并在单击“返回按钮”返回 Magento 商店后第二次触发。因为这个行为电子邮件被发送两次。

有没有办法防止观察者方法被执行两次?

亲切的问候,伯蒂