2013-08-03 125 views
1

我在Ember.js訪問模特屬性問題無法訪問Ember.js模型的財產

型號:

App.Page = DS.Model.extend({ 
    title: DS.attr('string'), 
    parent: DS.attr('number'), 
}); 

控制器:

App.BlocksController = Ember.ArrayController.extend({ 

    pages: function() { 
    return App.Page.find(); 
    }.property(), 

    pageTree: function() { 
    var pages = this.get('pages.content'), 
     pageTree = new Tree(); 
    for(var i = 0; i < pages.length; i++) { 
     console.log(pages[i], pages[i].id, pages[i].parent); 
    } 
    pageTree.insertList(pages); 
    return pageTree; 
    }.property('[email protected]'), 

}); 

我用模板/視圖中的pageTree屬性。 console.log確實打印了從API中檢索到的對象(包括id),但是我無法訪問其屬性(parent,給我undefined,但它在API響應中)。

一個console.log線看起來像這樣:

Object {id: "5", clientId: 19, type: function, data: Object, prematerialized: Object…} 
"5" 
undefined 

我假定使用[email protected]作爲屬性,該屬性pageTree應綁定到(加載)頁陣列。

是的,pages不是由ArrayController控制的模型,而是第二組模型。

當我在模板中使用{{#each pages}}{{parent}}{{/each}},它的工作原理!所以我想,這個問題與數據綁定有關?

僅供參考,我在灰燼1.0.0-rc.6.1,燼數據0.13,燼數據,Django的休息適配器0.13

回答

2

好了,感謝IRC:

pageTree: function() { 
    var pages = this.get('pages'), 
    pageTree = new Tree(); 
    pages.forEach(function(page) { 
    //console.log(page, page.get('parent')); 
    pageTree.insertAt(page.get('parent'), page); 
    }); 
    return pageTree; 
}.property('[email protected]'), 

因此,沒有.content,但是forEach.get()

+0

隨時:)歡迎來到餘燼 –

+0

所以這就是你如何做到這一點,即使帳戶數組長度爲1? – FutuToad

+0

ie this.get(「accounts.length」)=== 1 在控制器中 this.get(「accounts [0] .id」)未定義 – FutuToad