我正在尝试在 Ember.js 中实现一个固定长度的数组控制器,并让它在列表超出其容量时删除第一项。我的尝试如下,但失败并出现错误。
编辑:我现在在http://jsfiddle.net/EsF4R/39/有一个简单的 jsFiddle
我有一个与阵列控制器关联的视图。我相信错误是由于视图。当我删除它时,错误消失了,我能够弹出第一个对象。(注意:在我尝试实现 FIFO 功能之前,该视图运行良好。)
我还尝试将 popFirst 函数的内容放在运行循环(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
...
编辑:我现在在http://jsfiddle.net/EsF4R/39/有一个简单的 jsFiddle