試圖將一個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嵌套模型?並能夠使用自己的視圖來操作每個嵌套模型?
fetchRelated不會觸發任何請求到您的建議與服務器的任何請求。但事實上,由於父JSON完整樹結構的結構,我可以訪問集合。任何其他建議? – Alpha 2011-12-21 06:39:01