问题标签 [object.observe]

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 投票
2 回答
761 浏览

javascript - 在 document.location 上的 Object.observe

当页面的哈希值发生变化时,我需要执行一个 js 脚本,我知道有很多方法可以知道哈希值何时发生变化,例如使用 jQuery

我尝试使用Object.observe但没有用,我只是想知道为什么它没有,为什么更新document.location对象后回调没有触发。

0 投票
1 回答
1399 浏览

javascript - 如何在地图上使用 Object.observe?

如何在地图上使用Object.observe?这不起作用:

这也是:

0 投票
0 回答
73 浏览

javascript - Polymer webcomponents polyfill的Object.getNotifier()部分?

我有一个在 Chrome 中运行的 Polymer 应用程序,但在 Firefox 和 Safari 中出现错误 TypeError: Object.getNotifier is not a function

我包含了 webcomponents.min.js 的 polyfill 库(其中包括 observe-js),我认为它可以填充这个功能。有什么我想念的吗?

我们正在使用 Polymer v0.5.5

谢谢!

0 投票
1 回答
418 浏览

polymer - 聚合物,请观察全局路径

如果您使用更新其值, Polymer 1.0您可以删除{{localPropFoo.bar}}bar观察更改。this.set('localPropFoo.bar', 'new value');

但是,如果您想将模板绑定到您无法控制的外部对象,该怎么办?例如,这{{window.globalFoo.bar}}不会绑定bar更改,因为外部代码不依赖Polymer也不调用this.set.

在 codepen 上演示

手动使用Object.observe需要额外的代码,并且在 FireFox 中不起作用(对observe.js进行脏检查以进行救援)。

我想知道将数据绑定到您无法控制的外部对象的惯用方式是什么。

0 投票
2 回答
46 浏览

javascript - 观察已定义属性的值时超出最大堆栈

Maximum call stack size exceeded每当我尝试使用Object.observe来观察我为 through 定义属性的对象的变化时,我都会收到错误消息Object.defineProperty

在仍然能够使用这两种方法的同时避免抛出此错误的正确方法是什么?

注意:Object.observe仅在 Chrome 和 Opera 中可用

0 投票
2 回答
1135 浏览

polymer - 有没有办法在不触发 Polymer 中的观察者回调的情况下修改观察值

正如标题所说。有没有办法在不触发 Polymer 中的观察者回调的情况下修改观察值?

例如

这将很有用,因为现在我在以下情况下遇到了滞后:

  1. 适配aValue第三方应用
  2. Firebase 更新所有客户端
  3. .on 回调设置值并触发观察者回调
  4. 导致 .set 到 firebase
  5. 回到 2。

更新:这个问题与火力无关。我相信解决方案是控制如何将更新应用于 Polymer 中的观察值。部分原因是第 3 方(不一定是 Web)应用程序也可以对 firebase 存储中的值进行更改。

0 投票
0 回答
828 浏览

javascript - 如何在 HTML 元素中显示 JS 对象属性并在属性/属性更改后立即更新 HTML

目前我正在编写一个应用程序,它由数百个在后台异步更新的 JS 对象组成。使用 iframe 创建的多个面板可用于可视化 HTML 中的各种对象。

挑战:一旦对象被更新,显示更新的属性/属性的相应 HTML 元素应该自动更新自身。HTML 元素发生的更改应该/不一定会影响对象!我见过的许多双向数据绑定库都夸大了我的需求。

是否可以使用 Object.observe 编写一些有效的东西?目前我已经尝试了以下方法(有效),但是对于性能来说很糟糕,并且在 HTML 已被删除(面板已关闭或新对象打开)后会不断观察到对象:

主.html:


面板.html

设置“obj.param1 = 0;” 在 main.html 的控制台中将导致所有元素完全按照我需要的方式进行更改。有没有更优雅的方式来实现这一点,尤其是在一直创建和删除元素的情况下?

提前感谢您的评论和想法!

编辑:对于那些遇到类似挑战的人,我最终编写了一个小型库来解决我的大部分问题:github.com/weltwinkel/.b

0 投票
2 回答
1230 浏览

angular - Object.observe 退出和 RxJS 和 Angular 2

我有点困惑,因为据说 Obejct.observe 是从 ES2016 中退出的

另一方面,关于 Angular Connect 的讨论提到他们将依赖它。

据我所知,Angular 2 并不直接依赖于 Object.observe,而是依赖于使用 Object.observe 的 RxJS

你能帮我理解这次撤军的影响吗?我也很困惑这将如何影响功能性反应式 JavaScript 开发。

对不起,如果这是个愚蠢的问题,但所有这些概念对我来说都是新的。

0 投票
1 回答
42 浏览

object.observe - 如何在不触发观察者的情况下更改观察对象的值

这个问题很简单,但对于 Object.observe 的当前实现来说,这似乎是不可能的。想象 :

正如预期的那样,这将记录一个包含我所做更改的对象。所以问题是如何在没有这种副作用的情况下更改属性?

0 投票
1 回答
63 浏览

javascript - 使用客户端 javascript 监控添加到文档的新元素

Object.observe()几个月前,我使用它来监视来自window.document. 现在 Oo() 已从 em6+ 中退出,我需要自定义此行为。我需要访问在文档中任何地方创建的新元素。

我已经尝试过这些项目(有效,但没有子递归):

https://github.com/MaxArt2501/object-observe

https://github.com/jdarling/Object.observe

https://github.com/jdarling/Object.observe

我从 Mozilla MDN 阅读以使用proxy https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy我不确定要使用哪个陷阱,或者如何使这个递归。

这是我一直在使用 Oo() 的确切代码:

使用或不使用 polyfill 可以让我访问新创建的对象的最少代码量是多少?