0

単純なネストされたJSONがあります:

{
  "user": {
      "name": "John",

      "related": {
          "name": "Alice",

          "related": {
              "name": "Bob" 
          }
      }
   }
}

そして、私はバックボーンリレーショナルモデル「ユーザー」を持っています:

(function(){
  var User = Backbone.RelationalModel.extend({
     defaults: {
       name: "",
       related: {}
     },
     // Linking this model to itself
     relations: [{
       type: Backbone.HasOne,
       key: "related",
       relatedModel: User // As I've expected it doesn't exist at this time
     }]
  })
})()

だから、質問は:モデルをそれ自体にリンクする方法は?ありがとうございました!

4

1 に答える 1

1

Backbone.Relationalの「関連する」モデルはアクセス可能なスコープ内にある必要があり、Backbone-Relの以前のバージョンでは、通常、モデルがグローバルスコープ内でアクセス可能であると想定されていました。

ただし、Require.jsを使用している場合、またはモデル定義をクロージャでラップしている場合、それらはそのグローバルスコープに含まれません。

このプルリクエストはこの状況に対処します。Backbone-Relの最新のHEADを使用すると、Backbone-Relのカスタムスコープを追加して、次の場所で関連するモデルを探すことができます。

(function(){
    var models = {};
    Backbone.Relational.store.addModelScope(models);

    models.User = Backbone.RelationalModel.extend({
     defaults: {
       name: ""
     },
     // Linking this model to itself
     relations: [{
       type: Backbone.HasOne,
       key: "related",
       relatedModel: 'User'
     }]
    });

    var u1 = new models.User({
      name: "John",
      related: {
          name: "Alice",
          related: {
              name: "Bob" 
          }
      }
    });

    console.log(u1.toJSON());

})();

ライブjsFiddleの例:http ://jsfiddle.net/edwardmsmith/BRmQF/16/

于 2012-07-02T14:20:23.997 に答える