私はこのルートを持っています
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 で todo を直接読み込もうとすると、何も読み込まれません。
テンプレートをロードするためにすべてのデータが見つかるまで待機するために、コントローラーに何かを追加する必要がありますか?
ここにフルルートを入れます
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 に移動すると、すべての todo が正しく表示され、新しい todo を作成できますが、1 つの todo をクリックして表示すると、ルートが /#/todos/todo/ID に変更されます。ブラウザーを再読み込みすると、テンプレートに何も表示されず、モデルをルートに直接ロードしても何も返されないように見えます。見つかった唯一のパラメーターは id で、他の属性は null です。
したがって、この属性がある場合、テンプレート todo で
{{id}} - {{title}}
IDのみを表示し、コンソールを確認した場合
model: function(params) {
console.log(App.Todo.find();
モデル ID を返します。その他の値は未定義です