我试图关注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的余烬数据,如果这有帮助。
如果有人对于为什么会发生这种情况有任何想法,我会很感激。
答案 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()
});