javascript - 使用 BackBone 查看 javascript 对象更改

标签 javascript jquery backbone.js requirejs underscore.js

我有一个对象:

NAMESPACE.SOMEOBJECT.VALUE = 0

其他一些外国脚本拥有并根据我无权访问的事件更改该值。我知道不同页面上的不同事件会改变该值。我无法编辑控制该对象的 .js。有谁知道我如何监听该特定对象,然后在该值发生变化时运行一个函数?

我无法添加新库或任何外部脚本。我正在使用 Backbone、require.js 和 jQuery。

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

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

最佳答案

不幸的是,没有办法“在模型中添加对此对象的引用”,因为这只是另一种说法,即某些东西应该“监听”对象上的更改。为了使模型触发 change 事件,其属性之一必须更改,并且除了调用模型的 set 方法或(重新)从服务器端获取(更改的)数据。

轮询对象而不是监听事件怎么样?您可以使用setInterval定期查询相关值并跟踪其变化。如果值发生变化,您可以调用所需的行为。

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

希望这有帮助。

关于javascript - 使用 BackBone 查看 javascript 对象更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23461507/

相关文章:

javascript - 根据点击的链接显示/隐藏 UL

javascript - viewInstance.undelegateEvents() 和 $(this.el).unbind() 一样吗?

javascript - Backbone JS 路由无法正常工作

javascript - 优化 JavaScript DrillDown 代码

javascript - 如何延迟(例如 1 秒)React Redux Saga App 中加载指示器的显示?

javascript - 管道多部分表单上传到另一台服务器

javascript - 保存循环中每个项目的 ID,以便可以将其用作超链接,Jquery

javascript - 如何使用 GCC 重命名由 Object.defineProperty 创建的属性

javascript - jQuery - Ajax 在某些帖子上返回错误 500

javascript - 主干更新触发完成,但没有错误或成功