使用BackBone查看javascript对象更改

时间:2014-05-04 21:00:01

标签: javascript jquery backbone.js requirejs underscore.js

我有一个对象:

NAMESPACE.SOMEOBJECT.VALUE = 0

其他一些外国脚本根据我无法访问的事件拥有并更改该值。我知道不同页面上的不同事件会改变该值。我无法编辑控制该对象的.js。有没有人知道我怎么能听到那个特定的对象然后运行一个函数,如果该值改变?

我无法添加新库或任何外部脚本。我使用的是Backbone,require.js和jQuery。

如果我使用backbone.model并在我的模型中添加对该对象的引用,然后在我看来我会听我的模型,那会告诉我该对象是否已更新?如果是这样,母猪我会这样做吗?

我可以访问页面上的ID,该ID允许我访问具有我正在寻找的值的DIV。请记住,每次我的对象值更新时,我都需要知道它是否已更新。

1 个答案:

答案 0 :(得分:2)

不幸的是,没有办法'在模型中添加对此对象的引用',因为这只是另一种说法,应该“监听”对象的更改。为了使模型触发change事件,其属性之一必须改变,除了调用模型的set方法或(重新)获取(更改)数据之外,这不能通过任何方式发生从服务器端。

如何轮询对象而不是监听事件?您可以使用setInterval定期查询相关值并跟踪其更改。如果值更改,则可以调用所需的行为。

如果这非常适合您应用的设计,您还可以将此功能包装在Backbone模型中:在model's initialize / constructor中使用setInterval定期开始轮询值并使用set将其复制到模型的一个属性上。 Backbone会为您处理跟踪状态,如果(并且仅当)值发生变化,模型将触发change事件。

希望这有帮助。