3

我已閱讀thisthis問題,但它沒有幫助。我叫fetchRelated這樣:與JSON的主幹關係不會呈現所有屬性

initialize: function(){ 
      Artist.fetchRelated(
       'albums', 
       {success: this.render} 
      ); 
    }, 

    render: function(){                 
      this.model.get('albums').each(function(album){    
       console.log(album);          
       console.log(album.toJSON());       
       console.log(album.get('title'));      
      });               
      $(this.el).html(this.template({        
       current_user: App.current_user.toJSON(),   
       artist: this.model.toJSON(),       
       albums: this.model.get('albums'),      
      }));              

      return this; 
     }, 

第一console.log(album)正確返回一個有效的相冊樣板其所有屬性,但數與函數的toJSON下次調用沒有。它只是返回id。所以,當我嘗試在下一個日誌中檢索相冊的標題時,它會返回未定義的。

此外,它告訴我,我不能打電話的toJSON()在調用模板的藝術家,因爲它是不確定的,雖然,我只是用它來獲得相冊...

我我確定我的問題在於我仍然不習慣的回撥地獄,但我不知道如何解決這個問題。

編輯1:

的console.log(專輯)的反應是這樣的集合中的每個專輯:

_changing: false 
_events: Object 
_isInitialized: true 
_pending: false 
_permitsUsed: 0 
_previousAttributes: Object 
_queue: Backbone.BlockingQueue 
_relations: Array[2] 
attributes: Object 
    artist: child 
    description: "asdasd" 
    id: 1 
    image: "" 
    release_year: 1950 
    resource_uri: "/albums/1" 
    songs: child 
    title: "asdasd" 
changed: Object 
cid: "c8" 
collection: child 
id: 1 
__proto__: Surrogate 

編輯2:

我試圖改變的toJSON函數提供的骨幹關係,但我不明白爲什麼做這樣的事情應該解決我的問題,因爲我有其他模型和此功能正常工作,沒有任何重寫。

我試圖從我自己的返回_.clone(this.attributes)到JSON函數,因爲console.log(this.attributes)給出了正確的響應,但由於某種原因它返回相同。

artist: Object 
id: 1 
songs: Array[0] 
__proto__: Object 

這是我的關係。

relations: [{ 
     type: Backbone.HasMany, 
     key: 'songs', 
     relatedModel: SongModel, 
     collectionType: Songs, 
     reverseRelation:{ 
      key: 'album' 
     } 
    }], 
+0

你能張貼'的console.log(專輯)的結果;'打電話? – 2013-03-18 21:58:49

+0

你去@akoskm – Nocturn 2013-03-18 22:11:25

+0

你可以發佈關係嗎? – 2013-03-19 06:45:50

回答

0

我被困在了同樣的問題,我發現,您可以使用

render: function(){                 
    this.model.get('albums').each(function(album){ 
     album.fetch({ 
      success: function(fetchedAlbum) { 
       console.log(fetchedAlbum.toJSON()); 
      } 
     }); 
    }); 
}); 

這將取出的關係打印取相冊訪問屬性...

我不認爲這是一個解決方案,因爲使用骨幹關係的主要目的是爲了避免這種麻煩。

,如果我找到一個解決方案將更新此:d真正解決