Ember createRecord错误

时间:2014-08-01 00:37:49

标签: javascript web ember.js

我试图关注Ember getting started guide,但有一些差异。最值得注意的是,我使用的是预编译模板。这是我所拥有的,没有脏模板代码:

window.App = Ember.Application.create({
    LOG_TRANSITIONS: true,
    VERSION: '1.0.0',
    ready: function () {
        console.log('App version: ' + App.VERSION + ' is ready.');
    }
});

App.Store = DS.Store.extend({

    //Use fixtures - I've tried this without the extend too
    adapter : DS.FixtureAdapter.extend()
});


App.Router.map(function() {
    this.route("todos", { path: "/" });
});


App.TodosRoute = Ember.Route.extend({

    model: function() {
        return this.store.find('todo');
    },

    renderTemplate: function() {

        this.render('todos', {outlet:'main'});
    }
});

App.Todo = DS.Model.extend({
    title: DS.attr('string'),
    isCompleted: DS.attr('boolean')
});

App.Todo.FIXTURES = [
{
    id: 1,
    title: 'Learn Ember.js',
    isCompleted: true
},
{
    id: 2,
    title: '...',
    isCompleted: false
},
{
    id: 3,
    title: 'Profit!',
    isCompleted: false
}];

App.TodosController = Ember.ArrayController.extend({
    actions: {
        createTodo: function() {

            // Get the todo title set by the "New Todo" text field
            var title = this.get('newTitle');

            if (!title) { return false; }
            if (!title.trim()) { return; }

            // Create the new Todo model
            var todo = this.store.createRecord('todo', {
                title: title,
                isCompleted: false
            });

            // Clear the "New Todo" text field
            this.set('newTitle', '');

            // Save the new model
            todo.save();
        }
    }
});

如您所见,todos路由将todos模板呈现到main出口。所有这一切都很完美。但是,我现在遇到的问题是this.store.createRecord中的TodosController。每次调用它(通过我在应用程序的输入字段中输入),我得到一个Uncaught TypeError: undefined is not a function。我知道正在调用该函数,因为我可以在调用this.store.createRecord之前记录控制台输出。我在版本1.6.1的ember和0.14的余烬数据,如果这有帮助。

如果有人对于为什么会发生这种情况有任何想法,我会很感激。

2 个答案:

答案 0 :(得分:1)

您需要升级您的余烬数据版本。如果您使用bower安装它,则可以更改bower.json("ember-data": "~1.0.0-beta.8")中的版本并运行bower install

答案 1 :(得分:0)

我认为您应该像这样定义应用程序适配器:

App.ApplicationAdapter = DS.FixtureAdapter.extend();

而不是

App.Store = DS.Store.extend({

    //Use fixtures - I've tried this without the extend too
    adapter : DS.FixtureAdapter.extend()
});