0

Backbone.Rpcプラグインの使用[ https://github.com/asciidisco/Backbone.rpc ]コレクションをフェッチするときに、readメソッドでパラメーターを送信しようとしています。単一のモデルインスタンスを操作する場合、モデル属性の値を設定することにより、メソッド呼び出しにパラメーターを追加できます。

var deviceModel = Backbone.model.extend({
  url: 'path/to/rpc/handler',
  rpc: new Backbone.Rpc(),
  methods: {
    read: ['getModelData', 'id']
  }
});
deviceModel.set({id: 14});
deviceModel.fetch(); // Calls 'read'

// Request created by the 'read' call
{"jsonrpc":"2.0","method":"getModelData","id":"1331724849298","params":["14"]};

バックボーンコレクションで使用できる「set」メソッドがないため、コレクションをフェッチする前に同様のことを行うという、私が知っている対応する方法はありません。

var deviceCollection = Backbone.collection.extend({
  model: deviceModel,
  url: 'path/to/rpc/handler',
  rpc: new Backbone.Rpc(),
  methods: {
    read: ['getDevices', 'deviceTypeId']
  }
});
// This is not allowed, possible work arounds?
deviceCollection.set('deviceTypeId', 2);
deviceCollection.fetch();
// Request created by the 'read' call
{"jsonrpc":"2.0","method":"getDevices","id":"1331724849298","params":["2"]};

Backbone.Rpcを使用して収集メソッドにパラメーターを渡すことは可能ですか?または、fetchメソッドのデータオブジェクトでコレクションフィルターを渡す必要がありますか?

4

2 に答える 2

3

Backbone.Rpc (v 0.1.2) を更新しました。次の構文を使用して、呼び出しに「動的」引数を追加できるようになりました。

var Devices = Backbone.Collection.extend({
    url: 'path/to/my/rpc/handler',
    namespace: 'MeNotJava',
    rpc: new Backbone.Rpc(),
    model: Device,
    arg1: 'hello',
    arg2: function () { return 'world' },
    methods: {
        read : ['getDevices', 'arg1', 'arg2', 'arg3']
    }
});

var devices = new Devices();
devices.fetch();

この呼び出しにより、次の RPC 要求が生成されます。

{"jsonrpc":"2.0","method":"MeNotJava/getDevices","id":"1331724850010","params":["hello", "world", "arg3"]}
于 2012-11-15T11:23:41.263 に答える
0

ああ、わかりました、これは現時点では含まれていませんが、ここで問題を理解できます。RPC プラグインがコレクション プロパティを読み取れるようにするコレクションの回避策を追加できるはずです。

var deviceCollection = Backbone.collection.extend({
    model: deviceModel,
    url: 'path/to/rpc/handler',
    rpc: new Backbone.Rpc(),
    deviceTypeId: 2,
    methods: {
        read: ['getDevices', 'deviceTypeId']
    }
});

次に、この応答が作成されます。

{"jsonrpc":"2.0","method":"getDevices","id":"1331724849298","params":["2"]};

今晩見てみます。

于 2012-07-03T10:01:13.107 に答える