0

面倒な JavaScript をきれいにするためのバックボーン ソリューションをまとめようとすると、結局は骨の折れる作業になります。確かに私は何か間違ったことをしていますが、解決策が見つかりません。データには、次の属性 (名前、説明) を持つネストされたモデル CarsType を持つ多くのガレージが含まれています。各 carType はガレージごとに 1 回使用されますが、多くのガレージで見つけることができます。carType はガレージごとに任意にソートされるため、リレーション テーブル car_type/ガレージ ネーム パックはこのように定義されます | ID | ガレージID | car_type_id | 位置 |

各 carType は多くのメカニックに割り当てられます。各メカニックは多くのガレージで働くことができます。したがって、ネストされた 3 番目のレベルはリレーション テーブル

バックエンドはJsonを吐き出すrails 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 コレクションは別のファイルで定義されています

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 を呼び出すにはどうすればよいですか?

2 番目の質問: ガレージが要求されると、Rails はネストされたモデルの完全なツリーを送信します。最初のjsonの回答からバックボーンのネストされたモデルを作成する方法はありますか? ネストされた各モデルを独自のビューで操作できますか?

4

1 に答える 1

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

また、 relatedModel 'pack' とコレクションに関連付けられたモデルの間に矛盾があるようです: Pack

それでもうまくいかない場合は、 collectionType とは異なる名前をキーに付けてみましたか?

于 2011-12-18T18:31:05.043 に答える