3

私はバックボーンに比較的慣れていないので、アプリケーションで PageableCollection を使用しようとしています。

https://github.com/wyuenho/backbone-pageable

誰かが私を指摘してもらえますか、私は何が間違っていますか? バックボーン 1.0.0 を使用しています

次のように定義されたコレクションとモデルがあります。

var VoteList = Backbone.PageableCollection.extend({
    model: Vote,
    url: config.service + 'votes'
});

var Vote = Backbone.Model.extend({
    url: function () {
        return config.service + 'vote/' + this.id;
    }
});

アプリケーションの後半:

this.collections.voteList = new VoteList([], {mode: "client", state: {pageSize: 12}});
....
this.collections.voteList.remove(options.model);

PageableCollection.remove() メソッドは、VoteList コレクション (?) の URL を使用して Web サービスにアクセスする DELETE イベントを発生させます。これにより、DELETE メソッドには {id} が必要であるため、エラー 405「メソッドは許可されていません」が発生します。

@DELETE
@Path("/vote/{id}")
@Consumes({MediaType.APPLICATION_JSON})
public void deleteVoting(@PathParam("id") Integer id) {
    log.info("deleting " + id.toString());
}

通常の Backbone.Collection をインスタンス化するだけでページネーションを削除すると

var VoteList = Backbone.Collection.extend({ ... });

すべてが期待どおりに機能し、バックボーンは削除時にモデルの URL + ID を使用します。だから私の質問は、 PageableCollection を同じように動作させる方法ですか?

4

2 に答える 2

1

今朝、プラグインの作者からメールが届きました。Backbone 1.0.0 の既知のバグのようです。バージョン1.0.1でなくなると思います

このスレッドを参照してください: https://github.com/wyuenho/backbone-pageable/issues/70

問題を解決するために、この問題が修正されたバックボーンの最新の「マスター」ブランチを使用しました。

https://raw.github.com/jashkenas/backbone/master/backbone.js

または、何らかの理由で開発ブランチを使用できない場合は、次のような一時的な解決策も機能します。

var Vote = Backbone.Model.extend({
    initialize: function () {
        this.url = function () {
            return config.service + 'vote/' + this.get('id')
        }
    }
});
于 2013-09-03T08:41:40.543 に答える
0

バックボーン 1.1.0 にアップグレードすると、この問題が解決するようです。

backbone-pageable によって拡張された backbone 1.0.0 コレクションでまったく同じ問題に遭遇しました。

注意喚起!バックボーン 1.1 は 1.0 のコードと完全に互換性がないため、1.1 のアップグレード ノートoptionsに注意してthis.optionsください。

于 2014-01-17T14:48:45.223 に答える