具有任意参数的Backbone Collection.create()
Backbone Collection.create() with arbitrary parameters
我正在使用具有RESTful持久性的Backbone。
是否可以为Backbone Collection create()方法定义一些任意输入参数?通常,Backbone期望相应的模型作为输入参数。
示例:
模型"Adder"具有以下属性:"id"、"date"answers"sum"
我想通过传递3个参数来创建这些模型的一个实例(通过相应的collections的create()方法):a,b,c。然后,Backend将计算sum=a+b+c,并用计算出的sum创建一个记录。它应该返回一个有效的Model对象并将其添加到集合中。
所以。。。
POST api/adder 1, 2, 3
重新发布的JSON:
{
"id": 153235,
"date": "11/11/11",
"sum": 6
}
更新:
也许这个不那么极端的eample会有所帮助。除了模型的atts之外,我如何向POST方法发送额外的参数?
如果模型是:
{
a: 1,
b: 2,
c:3
}
我想再发送一个参数,比如calculation_mode,它在模型中不存在。
我能做到吗?
在我看来,您的问题是需要在客户端存储和更改计算参数,而这些参数不一定要通过POST
和PUT
请求发送到服务器。从本质上讲,您希望保存/创建模型属性的子集。
对于这种情况,一个好的模式是在模型中定义一个serverAttrs
属性——一个表示要持久保存到服务器的属性的属性哈希。
然后,您可以在模型中或模型扩展的基础模型中覆盖Backbone的save
方法(更好的方法)。
var MyModel = Backbone.Model.extend({
idAttribute: 'id',
serverAttrs: [
'id',
'label',
'fullName',
],
defaults: {
label: 'My Default Label',
fullName: '',
firstName: 'John',
lastName: 'Smith'
},
initialize: function(options){
this.updateFullName();
this.on('change:firstName change:lastName', this.updateFullName);
},
updateFullName: function(){
this.set('fullName', this.get('firstName') + ' ' + this.get('lastName'));
},
save: function(attrs, options) {
attrs = attrs || this.toJSON();
options = options || {};
if (this.serverAttrs) {
attrs = _.pick(attrs, this.serverAttrs);
}
return Backbone.Model.prototype.save.call(this, attrs, options);
}
});
在我们的保存方法中,我们检查serverAttrs
属性的存在,如果它存在,我们只提取这些属性并将它们持久化到服务器。
因此,总之,您可以在模型中存储您想要的任何属性(在合理的范围内),然后通过定义serverAttrs
属性,只将您想要持久化的属性发送到服务器。
- AngularJS Navigation (li ng-repeat, create header li), DOM
- 使用Object.create()的角度服务继承
- 我们可以用参数对象集合而不是原始数据来调用JavaScript collection.reduce()方法吗
- 在使用object.create创建的对象中使用super
- Underscore each to update collection
- chrome.tabs.create的回调不会在弹出窗口中触发
- Symfony2 - Collection + jQuery
- Backbone - Collection.add() / Collection.create() 之间的区别
- 如何在ajax重定向中传递create-formbuilder
- ColdFusion.Window.create不刷新弹出窗口
- 禁用facebook在like按钮启动edge.create事件
- 具有任意参数的Backbone Collection.create()
- 不明白为什么 Backbone collection.create 不发布数组
- Backbone collection.create()不返回更新后的模型
- 如何从collection.create调用中获取model.id
- 如何在 backbone.js collection.create 中触发“错误”回调
- 绑定到由collection.create()创建的模型的错误事件
- Firebase + backbone: collection.create()和collection.push()的区
- 如何处理从backbone.js中的collection.create()触发的多个无效事件
- 为什么Backbone's collection create()方法未填充id