要前言本,我必须澄清,我现在用的是传统的控制器和传统视图的过渡时期,而转变为灰烬2.3,在这里找到:如何获取Ember 2.3中的BeforeObserver等效项?
https://github.com/emberjs/ember-legacy-controllers
现在,我有一个属性在我的(传统)控制器上称为currentTopPost。
在余烬1.7,我有这样的设置:
// before observer
currentTopPostBeforeObserver: function(){
...
}.observesBefore('currentTopPost'),
// observer
currentTopPostBeforeObserver: function(){
...
}.observes('currentTopPost'),
我是有这种方式,当currentTopPost改变的原因,我想它保存旧topPost它切换它的值之前到新的属性,因为它是一个Post对象(我有一个Post模型)。
当然,在1.7中,我将旧帖子保存在beforeObserver中,然后在观察者中做了其他任何我必须做的事情。现在,在Ember 2.3中,我有这样的设置:
currentTopPostObserver: Ember.observer('currentTopPost', function(){
...
}),
对于使用新值执行函数的情况下,它可以正常工作。但是我已经失去了在价值改变之前处理行动的能力。现在根据这个问题的答案:
How can an observer find out the before and after values of the observed property in Ember.js?
的observesBefore功能已被弃用,我们应该跟随这名:但是
doSomething: Ember.observer('foo', function() {
var foo = this.get('foo');
var oldFoo = this.get('_oldFoo');
if (foo === oldFoo) { return; }
// Do stuff here
this.set('_oldFoo', foo);
})
,就试图用this.get( “_oldCurrentTopPost”),我什么也没得到。如何在更改之前访问此属性的旧值?
我建议以上Miguel的方法去,我会在这里虽然离开这个作为一种替代。 –
我想上面想要做'this.set('myRealProperty',value)'。事实上,我认为它会保持旧的价值,从不设置新的 – shane