1

追加のパラメーターを持つURLを持つモデル(およびそれに対応するコレクション)があります。たとえば、投稿のURLは次のcollectionようになります。

/rest-api/posts/2/comments/

特定のコメントの場合、URLは次のようになります。

/rest-api/posts/2/comments/3/

コメントコレクションとモデルを定義してインスタンス化するための最良のパターンは何ですか?

私は現在これを行っています:

var Comment = Backbone.Model.extend({
    url: function () {
        var base = '/rest-api/posts/' + this.get('post_id') + '/comments/';
        if (this.isNew()) { return base; }
        return base + this.id + '/';
    },
    // ...
});

var CommentsCollection = Backbone.Collection.extend({
    model: Comment,
    url: function () {
        return '/rest-api/posts/' + this.post_id + '/comments/';
    },
    initialize: function (options) {
         this.post_id = options.post_id;
    },
    // ...
});

そして、次のようにコレクションをインスタンス化します。

CommentsList = new CommentsCollection({ post_id: current_post_id });

acceptedこれはBackbone.jsでこれを行うためのパターンですか?私はこの新しいフレームワークを紹介しています。これを読みやすく保守しやすい方法でコーディングしたいと思います。

4

1 に答える 1

0

urlBackboneはIDをコレクションURLに自動的に追加するため、モデルで定義する必要はありません:http: //backbonejs.org/#Model-url

コレクションのURLに関しては、これはURLを取得するための完全に有効な方法であると私は考えています。

または、複雑さを増すために、コメントコレクションをPostモデルのプロパティとして追加し、必要に応じて初期化またはフェッチすることができます。そうすれば、必要に応じparentて、コレクションにプロパティを追加し、それを参照してベースURLを取得し、/commentsパーツを追加できます(これにより、投稿URLが変更された場合に2か所で変更する必要がなくなります)。

どちらを選択するかは、最終的には、処理する複雑さのレベルによって異なります。

于 2012-12-28T11:12:29.683 に答える