2

Backbone-relationalを使用することで、モデル タスクを次のようにしたいと考えています。

task = {
    id: 1
    assigned_id: 2
    name: 'read a book',
    user: userModel
};

私はこの方法(1)を試しましたが、結果は次の(2)です。

何か案は?


(1)

var User = Backbone.RelationalModel.extend({
    // urlRoot
});

var Task = Backbone.RelationalModel.extend({
        relations: [
            {
                type: Backbone.HasOne,
                key: 'user',
                relatedModel: User
            }
        ],

        // urlRoot
});

(2)

task = {
    id: 1
    assigned_id: 2
    name: 'read a book',
    user: null // null instead of having something related to user model
};
4

1 に答える 1

2

Task モデルの正確な JSON が何であるかわからないので、ここで推測しています。

バックボーンリレーショナルは、完全にネストされたモデルのいずれかを期待しています:

task = {
    id: 1
    assigned_id: 2
    name: 'read a book',
    user: {
               name: 'Fred Rogers',
               id: 42,
               occupation: 'Hero'
          }
};

または、関連するモデルの ID であると想定される文字列/数値:

task = {
    id: 1
    assigned_id: 2
    name: 'read a book',
    user: 42
};

nullユーザーモデルに対して得ている値に基づいて、2番目のケースに当たっていると思います。

バックボーンリレーショナルがモデルのインスタンスをインスタンス化し、関連するモデルが「キー」文字列/数値である場合、モデルの内部ストアを検索して、一致するモデルを見つけようとします。見つかった場合は、そのモデルをユーザー プロパティの値として設定します。

モデルが見つからない場合は、モデルの関連する関係プロパティmodel._relations[n].keyContentsにキーを隠し、ユーザー値を に設定しますnull

この時点で、fetchRelated関数を使用してデータストア/API から関連モデルを取得します。

task.fetchRelated()したがって、関連するユーザー モデルを取得するために呼び出してみてください。

task.fetchRelated('user');
于 2012-06-29T14:27:36.010 に答える