【发布时间】:2013-07-29 21:33:31
【问题描述】:
我有这条路线
this.resource('todos', { path: '/todos' }, function() {
this.route('todo', { path: '/todo/:todo_id' });
this.route('new', {path: '/todo/new'});
});
这是路由 todo 的控制器
App.TodoRoute = Ember.Route.extend({
model: function(params) {
return Todo.find(params.todo_id);
}
});
当我直接去加载/todos,然后选择一个todo按预期加载,但是当我尝试直接加载一个todo/todo/idOfTheTodoHere时,没有加载。
我必须在控制器中添加一些东西,直到找到所有数据才能加载模板?
我会把完整的路线放在这里
App.Router.map(function() {
this.resource('app', { path: '/' }, function () {
this.route("about");
this.resource('todos', { path: '/todos' }, function() {
this.route('todo', { path: '/todo/:todo_id' });
this.route('new', {path: '/todo/new'});
});
});
});
//This works and finds All todos
App.TodosRoute = Ember.Route.extend({
model: function () {
return App.Todo.find();
}
});
App.TodosNewRoute = Ember.Route.extend({
model: function () {
return App.Todo.create;
}
});
App.TodosTodoRoute = Ember.Route.extend({
model: function(params) {
console.log(App.Todo.find();
return Todo.find(params.todo_id);
}
});
现在,当我转到 /#/routes 时,所有待办事项都正确显示,我可以创建一个新的,但是当我单击单个待办事项进行显示时,路线更改为 /#/todos/todo/ID ,如果我重新加载浏览器,模板什么也不显示,看起来直接在路由上加载模型什么也不返回。找到的唯一参数是 id,其他属性为空。
如果我有这个属性,那么在模板 todo 中
{{id}} - {{title}}
仅显示 id,如果我检查控制台
model: function(params) {
console.log(App.Todo.find();
返回模型id,其他值未定义
【问题讨论】:
-
忘了说我使用了一个 ember 适配器,我认为这里的错误是适配器没有执行 findOne 查询?
标签: javascript ember.js ember-data