Ember.js 有什么方法可以消除观察者的情绪
我在控制器中有一个观察者,在进行更改时保存对象。问题是它发生得太频繁了Ember.js 有什么方法可以消除观察者的情绪,ember.js,Ember.js,我在控制器中有一个观察者,在进行更改时保存对象。问题是它发生得太频繁了 changed: ( -> #save code goes here ).observes("description") 我在想需要什么 此外,当属性通过键输入更改时,它似乎会保存对象两次,当属性从返回的服务器值设置时,它会再次保存对象 任何帮助都将是伟大的,我正试图把我的头围绕着灰烬 从Ember 1.0.0开始,您可以在任何视图或对象中通过将去抖动调用包装到另一个观察的函数中来获得去抖动观察者Ember.r
changed: ( ->
#save code goes here
).observes("description")
我在想需要什么
此外,当属性通过键输入更改时,它似乎会保存对象两次,当属性从返回的服务器值设置时,它会再次保存对象
任何帮助都将是伟大的,我正试图把我的头围绕着灰烬 从Ember 1.0.0开始,您可以在任何视图或对象中通过将去抖动调用包装到另一个观察的函数中来获得去抖动观察者
Ember.run.debounce
不返回函数,而是将函数句柄添加到字典中。以后每次使用该函数句柄调用Ember.run.debounce时,它都会检查字典以查看上次调用该函数的时间,并按预期对其进行解块
var MyView = Ember.View.extend({
calledRarely: function() {
console.log("This will log rarely.");
},
calledOften: function() {
console.log("This will log often.");
Ember.run.debounce(this, this.calledRarely, 1000);
}.observes("propertyThatChangesOften")
});
在这里,
this.calledOften
根本不会被取消公告,因此Ember.run.debounce
实际上会在属性更改时被频繁调用。它不会调用this.calledRarely
,直到我们的去抖动超时完成。我认为您没有成功接受我的建议的原因是,Ember.debounce/返回一个函数,该函数将仅在去抖动后运行。它实际上并不是自己运行函数。请看一下我在回答中列出的例子。让我知道这和你想做的有什么不同。如果不是这样,您可以发布一个jsFiddle,我们可以使用它作为基础来获得您想要的去Bouncing吗?至少在Ember 1.0.0中,Ember.debouncing已经不存在了。它是Ember.run.debounce,它不返回函数,而是将函数添加到查找哈希中,每次调用该函数时都会检查该哈希。@Willem Ember无效标记正在meta上讨论;威廉的观察家们并不反对。Felix的答案仍然适用于当前的api。是的,现在就是这样做的。自从我提出这个问题以来,余烬已经走了很长一段路。对backburner.js的升级为运行循环添加了急需的dbounce和throttle函数。