2013-10-18 108 views
0

我跟着這個例子http://emberjs.com/guides/controllers/dependencies-between-controllers/實現我的應用程序的嵌套資源,但繼續收到路徑和類型錯誤。嵌套資源錯誤

我已經建立了我的路線如下:

App.Router.map(function() { 
    this.resource('logs', {path: '/'}, function(){ 
    this.resource('log', {path:'/logs/:log_id'}, function(){ 
     this.resource('triggers'); 
    }); 
    }); 
}); 

我的控制器:

App.TriggersController = Ember.ArrayController.extend({ 
    needs:"log" 
}); 

型號:

App.Log = DS.Model.extend({ 
    name: DS.attr('string'), 
    type: DS.attr('string'), 
    messages: DS.attr('string'), 
    triggers: DS.hasMany(App.Trigger, {async:true}) 
}); 

子模型:

App.Trigger = DS.Model.extend({ 
    name: DS.attr('string'), 
    pattern: DS.attr('string'), 
    isEnabled: DS.attr('boolean'), 
    colour: DS.attr('string'), 
    highlightText: DS.attr('boolean'), 
    invertContrast: DS.attr('boolean') 
}); 

JSFiddle鏈接:http://jsfiddle.net/WZp9T/11/

單擊其中一個鏈接,您應該在控制檯中看到錯誤。

(「加載時出錯路線:類型錯誤{}」和「遺漏的類型錯誤:無法讀取屬性‘typeKey’的未定義」以及產生警告)

基本上,我想要實現的是:

日誌 - >日誌 - >日誌觸發器 - >觸發

每個上下文應保持在屏幕上,正好在那裏我要去錯了嗎?

編輯:這似乎是這個問題:

App.LogIndexRoute = Ember.Route.extend({ 
    model: function (params) { 
    return this.store.find(params.log_id); 
    } 
}); 

如果我刪除這段代碼我不再接受我的錯誤。

回答

0

您需要告訴商店您要查找哪種對象。現在你只是傳遞一個ID。這可能是你要找的東西:

App.LogIndexRoute = Ember.Route.extend({ 
    model: function (params) { 
    return this.store.find('log', params.log_id); 
    } 
});