2016-06-28 46 views
0

我想在每個DS.Model上存儲一個私有變量。它的目的是存儲待處理的回調(以防我想取消它)。Ember-數據DS.Model中的私有變量

我曾經嘗試這樣做(和它的作品):

DS.Model.reopen({ 
    init() { 
    let _pending; // my private var 

    this._getPending =() => _pending;     // get private var 
    this._setPending = callback => _pending = callback; // set private var 

    this._super(...arguments); 
    } 
}); 

我已經在initializer放在這個,和它的作品,因爲我希望它。

我的問題是:這是一個很好的做法嗎?它可能會搞砸了嗎? ...還有更好的方法嗎?

就我個人而言,我很滿意它的工作方式..但我不確定它是否是「Ember」方式。這將進入一個Ember-cli插件,所以我希望它是最可能的「最佳實踐」。 (_getPending/_setPending方法只能在插件內部使用。)

回答

1

這是我的2美分。我會說不,這不是一個好習慣,但它應該沒問題,因爲他們只是Ember Objects。這裏的問題是Ember數據模型用於什麼?從文檔它說:

「模型是代表您的應用程序呈現給用戶的底層數據的對象。」

根據定義,這不是他們所設計的,所以只是因爲你能夠這樣做並不意味着你應該像這樣使用它們。

等待回調,所以可以取消? Ember模型API定義了可用於此目的的狀態對象。 http://emberjs.com/api/data/classes/DS.Model.html像isDeleted,isValid,isNew這樣的標誌給出了所有可能的狀態。

我會將它們放在路由器動作中,在這些動作中它們很容易通過集成測試進行測試。

您可以檢查此截屏,說明他們:

https://www.emberscreencasts.com/posts/102-ember-data-20-model-states-and-flags

希望它能幫助。