问题标签 [observer-pattern]

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 回答
1728 浏览

javascript - 选中/取消选中所有复选框在 IE8 中不起作用

此 javascript 代码在 IE8 中不起作用,但在 Firefox 和 Google Chrome 中有效:

谁能帮我?

0 投票
1 回答
2265 浏览

ruby-on-rails - Rails 缓存清扫器和模型回调触发

我有以下课程:

一切都按预期工作;但是,after_update清扫器中的 要求do_something_cool模型中的方法已经完成才能正常运行。问题是after_update在回调之前(或可能同时)调用了清扫器中的do_something_cool,这会导致问题。

有谁知道如何after_update在模型回调后强制清扫器启动?有没有更好的方法来实现这一目标?

更新/修复:事实证明,与下面的答案不同,观察者回调实际上是以正确的顺序触发(在模型回调之后)。当我发现这一点时,我意识到肯定还有其他问题。

do_something_cool方法销毁所有守夜人的插槽,并用正确数量的插槽和正确的时间替换它们。观察者依靠时段的数量来确定守夜应该持续多长时间。所以,潜在的问题是所有守夜人的插槽都被破坏了,并且数据被缓存了,所以当我vigil.slots从观察者那里调用时,它正在使用缓存的(被破坏的插槽)数据。解决方案:只需在末尾调用 vigil.slots(true)do_something_cool即可重新加载/重新缓存新创建的插槽!

0 投票
4 回答
395 浏览

java - 我在哪里可以找到有关观察者设计模式的好资料?

在哪里可以找到研究观察者模式的好材料?我需要一些示例,代码以及建模情况的图片

0 投票
3 回答
1209 浏览

java - 在运行时添加监听器?-Java MVC

我的模型在我的 MVC 模式中,在运行时生成组件并通过 update() 方法将它们提供给视图以显示在屏幕上(你知道,模型是可观察的,视图是观察者)。但是我还需要给这些组件添加监听器,并且控制器有监听器方法(因为他们说MVC模式是这样的)并且它不参与这个更新过程。所以我不能在运行时添加监听器,只能在启动时在控制器的构造函数中添加。

我有一个想法,就是让控制器成为观察者,然后将数据提供给视图,并添加监听器。你觉得这样可以吗?

0 投票
5 回答
32845 浏览

java - 如何从后台服务更新 Android 活动中的信息

我正在尝试创建一个具有 ActivityList 信息的简单 Android 应用程序,当应用程序启动时,我计划启动一个服务,该服务将不断计算数据(它将不断变化)并且我希望 ActivityList 与服务在应用程序生命周期内计算的数据。

如何设置我的活动以收听服务?这是解决这个问题的最佳方法吗?

例如,如果您想象一个股票价格列表 - 数据将定期更改,并且需要与(在我的情况下)不断计算/获取数据的服务同步。

提前致谢

0 投票
1 回答
553 浏览

database - 对于将数据从一个数据库同步到其他应用程序数据库的有效方法有什么建议吗?

这是我的问题。我构建了一个网络应用程序,并且自然地将数据保存在描述该应用程序域的数据库中。之后,我为同一个组织构建了另一个 Web 应用程序,并使用单独的数据库来描述该应用程序的域并存储数据......自然会出现更多项目,并且对于每个应用程序,我将其数据隔离到单个数据库. 开发方面,我认为没关系,因为我可以在应用程序的数据库中维护对数据结构和数据的更改。

考虑到这些应用属于同一个组织,它们之间往往会复制大量数据,例如部门名称、职位名称、商店名称等。这些表中的大多数包含相同的数据,但在每个数据库中并不完全相同,并且并非总是被所有应用程序使用。然而,对这些数据的更改需要在所有应用程序中进行更改(有时以不同的方式),从而造成越来越多的管理“麻烦”。

所以我一直在想一种方法来获得数据之间的一些同步。我想要更轻松的管理 - 在一个应用程序(或中央应用程序)上更新并根据每个应用程序的需要更新所有数据库 - 以及在应用程序之间共享数据的更好方法(比如可能在新应用程序中混合来自不同应用程序的数据下面具体分析)。我所指的大多数数据都被用作约束,而不是核心领域概念,描述组织而不是描述特定领域。

我正在寻找有关完成此任务的一些方法的意见。

我的第一个想法是获取公共数据结构,例如我提到的部门名称表,并将它们粘贴在核心数据库中。对数据的任何更新都将通过专用的网络应用程序在此数据库中完成,并且我会为这些更改应用某种观察者或发布者/订阅者模式 - 应用程序将通知观察应用程序的更改(通过那里的专用网络服务)发生更改并允许应用程序获取新数据并根据需要使用它。GUID 可以作为用户的参考来识别整个应用程序中的相同数据。此外,我可以为不需要在特定应用程序的数据库中但可能对它有用的读取和搜索操作构建 Web 服务。

第二个想法是每个应用程序管理自己的数据,并且应用程序可以相互观察。一个人的变化可以通知其他共享相同数据结构的人发生了变化。我仍然可以使用一些 GUID,甚至可以在任何应用程序上构建服务。我认为这在数据重复方面也不会过多,但可能更难管理,因为每个应用程序最终都会与其他应用程序耦合,而且我想知道如何分配责任,即哪个应用程序控制哪些信息。

我真的很好奇这种类型的数据分发和同步会起作用,甚至会被推荐。非常欢迎提出意见和其他想法!

0 投票
3 回答
2424 浏览

ruby-on-rails - 将参数传递给 after_save 观察者

我希望用户在表单上输入以逗号分隔的登录列表,以便在创建新评论/帖子时通过电子邮件收到通知。我不想将此列表存储在数据库中,因此我将使用 form_tag_helper 'text_area_tag' 而不是表单助手 text_field。我有一个“after_save”观察者,它应该在创建评论/帖子时发送一封电子邮件。据我所知,after_save 事件仅将模型对象作为参数,那么如何将这个非模型支持的登录列表传递给观察者,以传递给在 cc 列表中使用它们的 Mailer 方法。

谢谢

0 投票
1 回答
795 浏览

java - 如何处理 Observer 中的数据输出?

我有一个Observable和一个Observer。observable 确实在后台线程中下载了一些东西并调用notifyObservers让观察者读取状态。

public void update观察者的某个时刻尝试更新 GUI

但似乎 observable 线程调用了这个方法,因为 Observable (!!!) 抛出了这个:

有什么办法可以防止这种情况发生吗?我确定我在这里遗漏了一些明显的东西。

0 投票
2 回答
4997 浏览

javascript - 使用 ajax/jquery 的浏览器即时更新

我正在尝试对 facebook 如何处理他们的通知进行逆向工程,当您收到消息时,您会立即通过浏览器收到通知。

我已经摆弄了一点,并意识到如果您愿意从服务器进行某种更新,总会有一个挂起的 GET 请求“监听”。这似乎是某种观察者模式。我只是想知道这种模式是否记录在某处。

0 投票
4 回答
135 浏览

design-patterns - 对象事件,它们是如何实现的

事件真的很棒,我不知道没有它们我会做什么,但它们对我来说是个谜。

我说的是某种意义上的事件,如果属性或值发生特殊事件,则调用函数。

我只有最模糊的想法这些实际上是如何工作的。我知道这是一种观察者模式,但我并不真正知道它是如何工作的和/或如何实现它。

有人可以向我解释吗?