汚れたジャバスクリプトをきれいにするためのバックボーン解決策をまとめようとすると、苦しい努力に終わります。確かに私は何か間違っていますが、解決策を見つけることはできません。 データには、次の属性(名前、説明)を持つモデルCarsTypeをネストしたガレージが多数含まれています。 各carTypeはガレージごとに1回使用されますが、多くのガレージにあります。 carTypeはガレージごとに任意にソートされています このように関係テーブルcar_type/garage name packが定義されています | id | garage_id | car_type_id |ポジション|backbone-relational FetchRelatedは何も取り出さない
各carTypeは多くの機械に割り当てられます。各機械工は多くのガレージで働くことができます。 したがって、3番目のネストされたレベルはリレーションテーブルmechanic_pack | mechanic_id | pack_id |
バックエンドはJsonを吐き出すレール3.1です。
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を呼び出す必要があり、常に未定義
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) {
......
であることを示して?
2番目の質問: ガレージが要求されると、レールはネストされたモデルのフルツリーを送信します。最初のjsonの答えからバックネストのネストされたモデルを設定する方法はありますか?それぞれのネストされたモデルをそれぞれのビューで操作することができるでしょうか?
fetchRelatedは、あなたの提案を両方ともサーバーに要求しません。しかし、親Jsonのフルツリー構造の構造のせいで、コレクションにアクセスできます。他の提案? – Alpha