2013-05-09 22 views
0

你們可能需要更多的細節來回答這個問題,但我想它可能很簡單。我正在使用Ember Data和燈具適配器。Ember.js動態段沒有嵌套的路線

這正確地將URL映射到我的模型中的每個項目。

App.Router.map(function() { 
    this.resource('quotes', function(){ 
    this.resource('quote', {path: '/:quote_id' }) 
    }); 
}); 

App.QuotesRoute = Ember.Route.extend ({ 
    model: function(){ 
     return App.Quote.find(); 
    } 
}); 

但是這不。

App.Router.map(function() { 
    this.resource('quotes', {path: '/:quote_id' }); 
}); 

App.QuotesRoute = Ember.Route.extend ({ 
    model: function(){ 
     return App.Quote.find(); 
    } 
}); 

不燼只知道返回App.Quote.find(quote_id)如果它是一個嵌套的資源?

+0

'this.route('quotes',{path:'/:quote_id'});'? – intuitivepixel 2013-05-09 07:56:51

+0

'未捕獲的錯誤:斷言失敗:無法使用'id'在未定義的對象上調用獲得。' – 2013-05-09 08:12:56

+0

和this'this.resource('quotes',{path:'/ qoutes /:quote_id'});' – intuitivepixel 2013-05-09 08:37:09

回答

0

第二個示例中的路由控制器將生成爲Ember.ArrayController,它將與爲您的'/:quote_id'路徑生成的控制器不匹配,因爲它是單例。

如果您通過單個模型,使用return App.Quote.find(1);或返回一條記錄的內容會發生什麼情況。

我仍然試圖理解你想要發生的第二個代碼示例。你期待什麼樣的邏輯?

+0

第一個例子,如果我去whatever.com/#/quotes/1它返回我的燈具數據中的第一條記錄。在第二個例子中,它沒有。它不會返回任何東西,它告訴我'不能用'id'來調用未定義的對象。「我真的只是想明白他們爲什麼表現不同。 – 2013-05-09 19:10:37

+0

行爲有所不同,因爲在第一個示例中,模型數組被加載到(自動創建的)類型爲'Ember.ArrayController'的Quotes'控制器中,並且該路由支持隱含於您的數組到單例過程定義路由,並自動將數組中的第一條記錄加載到爲'Quote'控制器創建的'Ember.ObjectController'中。 – harn145 2013-05-09 19:23:06

+0

好吧,我想我知道了,謝謝! – 2013-05-10 08:12:46