Ember错误:当使用Ember.ArrayController.create(...)时,Ember.Object.create不再支持定义调用_super的方法

时间:2014-02-15 16:39:04

标签: ember.js

我正在阅读一本书教程,这是导致以下错误的代码块。

断言失败: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>

2 个答案:

答案 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.movi​​esController.get( '长度');

并让它返回2

此时,我在这本书中遇到了一些问题...我认为是时候转向更好的书了:(