要前言本,我必須澄清,我現在用的是傳統的控制器和傳統視圖的過渡時期,而轉變爲灰燼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