我正在阅读一本书教程,这是导致以下错误的代码块。
断言失败:Ember.Object.create不再支持定义调用_super的方法。烬-1.3.2.js:3285
未捕获的TypeError:对象[object Object]的属性'_super'不是函数application.js:6
导致错误的代码块:
MovieTracker.moviesController = Ember.ArrayController.create({
content: [],
init: function() {
this._super();
var list = [
MovieTracker.Movie.create({
title: 'Movie 1',
rating: 4
}),
MovieTracker.Movie.create({
title: 'Movie 2',
rating: 5
})];
this.set('content', list);
}
});
我是Ember的新手,对Ember的对象模型有基本的了解,我读过关于this的任何内容._super()错误涉及使用内置于ember中的Mixins。我不确定这如何适用于构建Ember.ArrayController对象。该错误告诉我不再支持_super()。直到这一点,我一直在完成整个教程。我不知道该如何从这里开始。
我正在使用Ember 1.3.2和以下书籍教程 “Ember.js应用程序开发方法”,这个例子在第25页
我已经看到了返回this._super()的建议。在init方法结束时但仍然会导致错误。
编辑: 我意识到我使用的是旧版本的Ember,所以我升级到了1.4.0,但我仍然得到了相同的._super()错误,但它只有一个错误而不是两个错误:
未捕获错误:断言失败:Ember.Object.create不再支持定义调用_super的方法。烬-1.4.0.js:73
同样它说我在创建对象时不再支持_super,但是如何使用ArrayController.create方法处理它?</ p>
答案 0 :(得分:0)
s/Ember.ArrayController.create/Ember.ArrayController.extend
。无需创建controller
的实例。 Ember负责在运行时实例化它们。
如果您需要在实例上初始化道具,请使用Em.Object.createWithMixins
答案 1 :(得分:0)
谢谢selva-G的答案。您的解决方案确实删除了错误,但它确实在本教程的稍后部分引起了问题:(
我能够通过创建对象然后设置我需要的值来解决此问题。
本教程中的这个脚本似乎试图同时实例化和设置值。我将代码更改为以下内容:
MovieTracker.moviesController = Ember.ArrayController.create();
MovieTracker.moviesController.set('content', [
MovieTracker.Movie.create({
title: 'Movie 1',
rating: 4
}),
MovieTracker.Movie.create({
title: 'Movie 2',
rating: 5
})
]);
这允许我使用
MovieTracker.moviesController.get( '长度');
并让它返回2
此时,我在这本书中遇到了一些问题...我认为是时候转向更好的书了:(