2012-06-28 146 views
2

通過使用Backbone-relational之間我想有這樣的模型任務:骨幹關係兩款車型

task = { 
    id: 1 
    assigned_id: 2 
    name: 'read a book', 
    user: userModel 
}; 

我也嘗試這種方式(1),但結果卻是下面的(2)。

任何想法?


(1)

var User = Backbone.RelationalModel.extend({ 
    // urlRoot 
}); 

var Task = Backbone.RelationalModel.extend({ 
     relations: [ 
      { 
       type: Backbone.HasOne, 
       key: 'user', 
       relatedModel: User 
      } 
     ], 

     // urlRoot 
}); 

(2)

task = { 
    id: 1 
    assigned_id: 2 
    name: 'read a book', 
    user: null // null instead of having something related to user model 
}; 

回答

2

不知道你的確切JSON是你的任務模式是什麼,所以我猜這裏。

骨幹關係期待要麼完全嵌套模式:

task = { 
    id: 1 
    assigned_id: 2 
    name: 'read a book', 
    user: { 
       name: 'Fred Rogers', 
       id: 42, 
       occupation: 'Hero' 
      } 
}; 

或字符串/號碼,就會認爲是相關模型的id:

task = { 
    id: 1 
    assigned_id: 2 
    name: 'read a book', 
    user: 42 
}; 

我m猜你正在打第二種情況,根據你獲得的用戶模型的null值。

當骨幹關係實例化模型的一個實例,並且相關模型是「關鍵」字符串/數字時,它將搜索其內部存儲的模型以嘗試找到匹配模型。如果它找到它,它會將該模型設置爲用戶屬性的值。

如果無法找到該模型,則會在模型的相關關係屬性model._relations[n].keyContents中存儲該關鍵字,並將用戶值設置爲null

在這一點上,您將使用fetchRelated函數從數據存儲區/ API獲取相關模型。

所以,嘗試調用task.fetchRelated()獲得相關用戶模型:

task.fetchRelated('user');