2014-12-20 171 views
0

Ember的Em.ArrayProxyEm.Array有許多可用於通知觀察者對content所做更改的程序方法。例如:Ember ArrayProxy的最佳做法

  • arrayContentDidChange
  • arrayContentWillChange
  • enumerableContentDidChange
  • enumerableContentWillChange
  • contentArrayWillChange

Em.ArrayProxy也有操縱ArrayProxy內容的幾種方法。例如:

this.pushObject('something random'); 
// Or 
this.insertAt(2, 'something random'); 

使用後者時的方法,沒有一個必須結合前方法中使用它們?看來愚蠢的Ember的通常自動化財產觀察員將在這裏需要手動踢,但我不覺得the documentation很清楚。

回答

1

不,你不必使用任何方法結合。

如果你想添加項目到你的ArrayProxy,只需pushObject()。您將通過只使用方法,並看到這只是工作知道這一點。

從文檔:

這混入實現觀察員友好陣列的行爲。它不是一個具體的實現,但它可以通過希望出現像陣列其他類用完。

http://emberjs.com/api/classes/Ember.Array.html

Ember.Array是一種類的,在其他的編程語言(不混入)接收的接口的名稱。

ArrayProxy包裝實現Ember的任何其他對象。陣列

http://emberjs.com/api/classes/Ember.ArrayProxy.html

Ember.ArrayProxy正是它的名字說,代理,周圍已經實現Ember.Array接口的任何對象包裝。

其他方法,你提到,可能會執行/如果你正在的Ember.Array自己的「繼承」覆蓋。一些必須被實現來使你的子類ArrayProxy友好。或者,如果您想添加自定義行爲,可能會在arrayContentDidChange時寫入日誌,然後重寫該方法並添加應用程序需要的任何邏輯。

這是面向對象編程,所有這些解釋超出了任何框架文檔的範圍。

0

你問pushObject等等是否引發這些事件?

documentation for insertAt

這將使用原始replace()方法指定索引處插入的對象。

documentation for replace

你也應該調用this.enumerableContentDidChange()

所以,是的,一個正確實施ArrayProxy將引發這些事件,當您添加或刪除的東西。