[英]Ember direct route dont loads content
我有這條路
this.resource('todos', { path: '/todos' }, function() {
this.route('todo', { path: '/todo/:todo_id' });
this.route('new', {path: '/todo/new'});
});
這是路線待辦事項的控制器
App.TodoRoute = Ember.Route.extend({
model: function(params) {
return Todo.find(params.todo_id);
}
});
當我直接加載/ todos並選擇一個待辦事項時,按預期方式加載,但是當我嘗試直接加載/ todo / idOfTheTodoHere時,nothign被加載。
我必須向控制器添加一些內容,以等待找到所有數據以加載模板?
我會把這條完整的路線放在這里
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,其他屬性為null。
所以在模板待辦事項中是否具有此屬性
{{id}} - {{title}}
僅顯示ID,如果我檢查控制台
model: function(params) {
console.log(App.Todo.find();
返回模型ID,其他值未定義
不知道這是不是,但是也許你的意思是導航到#/todos/todo/SOME_ID
而不是#/todo/SOME_ID
映射時為todo路由提供的路徑( this.route('todo' {path: 'todo/:todo_id'});
) 附加到父路徑( /todos
),因此您最終得到todos/todo/:todo_id
。
除此之外,您可以執行一些調試步驟來進一步隔離問題
model
掛鈎是否被調用? params.todo_id
嗎? 編輯
我認為您的意思是在模型掛鈎中為TodosTodoRoute調用App.Todo.find:
App.TodosTodoRoute = Ember.Route.extend({
model: function(params) {
console.log(App.Todo.find();
return Todo.find(params.todo_id); // --- should be App.Todo.Find
}
});
您發布的代碼中還存在一些語法錯誤-您是否可以發布重復該問題的JSBin或JSFiddle示例?
您是否確認App.Todo.find(some_id)向正確的服務器端點發出了請求? 您的服務器是否提供正確的響應?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.