使用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方法的数据对象中传递集合过滤器?
答案 0 :(得分: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"]}
答案 1 :(得分: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"]};
今晚我会看看。