2012-12-02 127 views
1

我正在嘗試使用骨幹關係實現骨幹。骨幹JS與骨幹關係的嵌套模型

索賠模型:

define(['underscore', 'backbone', 'backbone-relational', 'models/User'], function(_, Backbone, relational, User) { 
    var Claim = Backbone.RelationalModel.extend({ 

    relations: [{ 
     type: Backbone.HasOne, 
     key: 'a_user', 
     relatedModel: User 
    }], 

    defaults: { 
    }, 

    initialize: function() { 
    }, 

    clear: function() { 
    this.destroy(); 
    this.view.remove(); 
    } 

    }); 
    return Claim; 
}); 

用戶模型是一個重複,但沒有關係集。

下面是集合對象:

Object 
_byCid: Object 
_byId: Object 
_callbacks: Object 
currentPage: 1 
firstPage: 1 
information: Object 
length: 3 
models: Array[3] 
0: Object 
1: Object 
    _callbacks: Object 
    _deferProcessing: false 
    _escapedAttributes: Object 
    _isInitialized: true 
    _pending: Object 
    _permitsUsed: 0 
    _previousAttributes: Object 
    _queue: Object 
    _relations: Array[1] 
    _silent: Object 
    attributes: Object 
     _deleted: false 
     _new: false 
     a_user: Object 
      _callbacks: Object 
      _escapedAttributes: Object 
      _isInitialized: true 
      _pending: Object 
      _permitsUsed: 0 
      _previousAttributes: Object 
      _queue: Object 
      _relations: Array[0] 
      _silent: Object 
      attributes: Object 
       _deleted: false 
       _new: false 
       already_in_save: false 
       already_in_validation: false 
       coll_claims: Array[0] 
       coll_claims_partial: true 
       created_at: "2012-12-12 09:00:00" 
       email: "[email protected]" 
       firstname: "Cloud" 
       id: 2 
       lastname: "Strife" 
       modified_at: "2012-12-12 09:00:00" 
       modified_columns: Array[0] 
       start_copy: false 
       title: "Mr" 
       validation_failures: Array[0] 
       virtual_columns: Array[0] 
       __proto__: Object 
       changed: Object 
       cid: "c4" 
       collection: undefined 
       id: 2 
       __proto__: Object 
       already_in_save: false 
       already_in_validation: false 
     created_at: "2012-12-12 09:00:00" 
     fulfilment: "bank" 
     id: 2 
     manual: 0 
     modified_at: "2012-12-12 09:00:00" 
     modified_columns: Array[0] 
     promotion_id: 1 
     purchase_id: 2 
     start_copy: false 
     status: "pending" 
     user_id: 2 
     validation_failures: Array[0] 
     virtual_columns: Array[0] 
     __proto__: Object 
     changed: Object 
     cid: "c3" 
    collection: Object 
    id: 2 
    __proto__: Object 
    2: Object 
    length: 3 

所以基本上有集合中3個,根據權利要求模型,並且每個權利要求模型具有用戶的屬性鍵a_user嵌套模型。

模板的樣子:

<% _.each(claims, function(item){ %> 
    <tr> 
     <td><%= item.get("id") %></td> 
     <td><%= item.get("promotion_id") %></td> 
     <td><%= item.get("a_user").get("firstname") %></td> 
     <td><%= item.get("purchase_id") %></td> 
    <td></td> 
     <td><%= item.get("status") %></td> 
     <td><%= item.get("created_at") %></td> 
    </tr> 
<% }); %> 

然而,這導致錯誤:

TypeError: 'null' is not an object (evaluating 'item.get("a_user").get') 

如果我收回剛纔item.get( 「a_user」),它顯示輸出[對象對象]

我只是在學習骨幹,所以任何指針的讚賞。

回答

2

你不應該使用get在模板中 - 下劃線模板使用JSON工作,而不是骨幹模型對象(您通過模型來使用template(model.toJSON())模板),所以他們應該使用基本點標記進行評估:

<tr> 
    <td><%= item.id %></td> 
    <td><%= item.promotion_id %></td> 
</tr> 
+1

感謝你們,我也讀過,也許我不應該在模板內循環,並應循環內集合視圖和呈現單數模板? null不是我遇到的對象,與Propel沒有正確地將事情從數據庫中拖回來有關。 –