不确定这是否是最好的方式。我需要在更改值的边界之前添加延迟。对此有多种场景,但常见的一种是对已更改的文本进行搜索。我们在文本框中键入内容,并且不想立即过滤列表。我们想推迟一下。有多种方法可以实现这一点,主要是通过创建自定义视图。在Ember中创建自定义绑定
我想添加一个自定义绑定。这是它的外观:
var DelayedBinding = function() {
var updateBack = function (target) {
console.log('called')
this._scheduleSync(target, 'back');
};
Ember.Binding.apply(this, arguments);
this.toDidChange = function(target) {
Ember.run.debounce(this, updateBack, target, 5000);
};
};
DelayedBinding.prototype = Ember.Binding.prototype;
它设置在代码中绑定时效果很好:
new DelayedBinding('value', '_parentView.context.term').connect(this);
即使它的工作原理。看起来Bindings不像Ember中的其他constructors
那样遵循相同的可扩展性模式,所以我不确定这是否是正确的方式。
一个评论,这是否正常工作?我有点昏昏欲睡,但看起来每次属性更改时,您都会发送一个新的匿名函数,这个函数不等同于之前的匿名函数,并且会在500毫秒后执行两次。这是完全可能的,我错了,就像我说的,我很困,不愿意现在测试它:) – Kingpin2k
良好的捕获。我试图在发布之前简化代码。现在更新。 –