我想在Ember.js中實現一個固定長度的數組控制器,並使它在列表中刪除第一個項目超過其容量。我的嘗試是在下面,但它失敗並出現錯誤。在Ember.js中實現先進先出固定長度的數組控制器
EDIT:我現在在http://jsfiddle.net/EsF4R/39/
有一個簡單的jsfiddle我有一個是與陣列控制器相關聯的視圖。我相信這個錯誤是由於這個觀點。當我刪除它時,錯誤消失,我可以彈出第一個對象。 (注意:視圖工作正常,直到我嘗試實現FIFO功能。)
我也嘗試將popFirst函數的內容放入runloop(Ember.run(...))中。
有誰知道我該如何實現這個FIFO陣列,並使視圖仍然工作?
MyApp.fifoController = Ember.ArrayController.create({
content: [],
popFirst: (function() {
if (this.get('length') >= 3) {
return this.removeObject(this.get('firstObject'));
}
}).observes('length')
});
<div id="fifo-pool">
{{#each MyApp.fifoController}}
{{#view MyApp.ItemView contentBinding="this"}}{{/view}}
{{/each}}
</div>
Error:
Uncaught TypeError: Cannot call method '_insertElementLater' of undefined genigames/vendor/ember:16704
DOMManager.after genigames/vendor/ember:16704
Ember.ContainerView.Ember.View.extend._scheduleInsertion genigames/vendor/ember:14708
Ember.ContainerView.states.hasElement.childViewsDidChange genigames/vendor/ember:14765
Ember.View.Ember.Object.extend.invokeForState genigames/vendor/ember:12902
Ember.ContainerView.Ember.View.extend.childViewsDidChange genigames/vendor/ember:14687
...
編輯:我現在有一個簡單的jsfiddle在http://jsfiddle.net/EsF4R/39/
你能張貼App.ItemView的代碼嗎?或者更好的Jsfiddle? –
我不認爲這會解決您的問題,但看看如果使用集合而不是每個作品 '{{#collection elementId =「fifo-pool」contentBinding =「MyApp.fifoController」itemViewClass =「MyApp.ItemView」} }' –
我編輯了上面的問題以包含jsFiddle的鏈接:http://jsfiddle.net/EsF4R/38/ –