我有一个用于日期选择器的ArrayController,其属性为到,来自。现在,当用户从UI中选择新的日期范围时,到和从值都会更改。
因此,对于日期范围内的单个更改,到和从观察员的功能会触发两次。
我想在每个日期范围更改时触发该功能。有关如何使用ember
的任何建议 app = Ember.Application.create();
app.Time = Ember.ArrayController.create({
to: null,
from: null,
rootElement: "#time",
debug1: function() {
this.set('to', 1);
this.set('from', 2);
},
debug2: function() {
this.setProperties( {
'to': 3,
'from': 4
});
},
debug3: function() {
this.beginPropertyChanges();
this.set('to', 5);
this.set('from', 6);
this.endPropertyChanges();
},
search: function() {
alert('called');
}.observes('to', 'from')
});
答案 0 :(得分:11)
也许您可以在from
和to
上引入计算属性,然后将观察者插入此属性。由于CP默认是缓存的,我认为观察者只会被触发一次。
date: function(){
// return the computed date
}.property('from', 'to')
dateDidChange: function(){
}.observes('date')
编辑感谢您的小提琴,它似乎可以使用setProperties,或者开始/结束propertyChanges http://jsfiddle.net/Sly7/zf2q3/1/
答案 1 :(得分:4)
您可以将观察者包装在Em.run.once
_dateDidChange: function(){
Ember.run.once(this, 'dateDidChange');
}.observes('from', 'to'),
dateDidChange: function() {
// should be called only once
}