2011-12-18 53 views
0

試圖將一個backone解決方案放在一起來清理雜亂的javascript,最終成爲一個痛苦的努力。當然,我做錯了什麼,但找不到任何解決方案。 數據包含許多具有嵌套模型CarsType並具有以下屬性(名稱,說明)的車庫。 每個車型在每個車庫使用一次,但可以在許多車庫中找到。 carType每車庫任意排序 所以關係表car_type /車庫名稱包是這樣定義的 | id | garage_id | car_type_id |位置|骨幹關係FetchRelated無法獲取任何東西

每個車型都分配給很多機械師。每個技工都可以在很多車庫工作。 所以第三個嵌套關卡是關係表mechanic_pack | mechanic_id | pack_id |

後端是軌道3.1,吐出Json。

Garage = Backbone.RelationalModel.extend({ 
    relations: [ 
     { 
      type: Backbone.HasMany, 
      key: 'Packs', 
      relatedModel: 'pack', 
      collectionType: 'Packs', 
      reverseRelation: { 
       key: 'garage', 
       includeInJSON: 'id' 
      } 
     } 
    ], 

    initialize: function(attributes) { 
     this.fetchRelated("packs"); 
     }, 

    url : function() { 
     var base = 'garages'; 
     if (this.isNew()) return base; 
     return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + this.id; 
    } 
///... more method ... 

}); 

包集合在另一個文件

Packs= Backbone.Collection.extend({ 
    model: Pack, 
    url: '/packs/list/:garage_id' 
}); 

模型被正確加載,但fetchRelated不取,不拋出任何錯誤定義。斷點在Firebugs表明toFetch總是不確定

fetchRelated: function(key, options) { 
    options || (options = {}); 
    var rel = this.getRelation(key), 
    keyContents = rel && rel.keyContents, 
    toFetch = keyContents && _.select(_.isArray(keyContents) ? keyContents : [ keyContents ], function(item) { 
    var id = _.isString(item) || _.isNumber(item) ? item : item[  rel.relatedModel.prototype.idAttribute ]; 
    return id && !Backbone.Relational.store.find(rel.relatedModel, id); 
    }, this); 
    if (toFetch && toFetch.length) { 
...... 

我應該如何調用fetchRelated?

第二個問題: 當需要車庫時,導軌發送完整的嵌套模型樹。有沒有辦法從最初的json回答中填充backones嵌套模型?並能夠使用自己的視圖來操作每個嵌套模型?

回答

0
initialize: function(attributes) { 
    this.fetchRelated("Packs"); 
    } 

而且,似乎是relatedModel「包」,並與您的收藏相關的模型之間的不一致:包

如果還是不行,你嘗試過給你鑰匙的名稱與你的collectionType不一樣?

+1

fetchRelated不會觸發任何請求到您的建議與服務器的任何請求。但事實上,由於父JSON完整樹結構的結構,我可以訪問集合。任何其他建議? – Alpha 2011-12-21 06:39:01