我有一个模型,我想添加parse方法,以便进行额外的数据工作(为日期字段设置moment.js对象)。
但是从不调用函数(模型和集合)。
收藏:
class SomethingCollection extends Parse.Collection
model: SomethingModel
parse: ->
console.log('parse from collection')
模特:
class SomethingModel extends Parse.Object
className: 'Something'
parse: ->
console.log('parse from model')
从视图:
@collection = new SomethingCollection()
@listenTo( @collection, 'add', -> console.log('fire add event') )
@collection.fetch(parse: true, silent: false, add: true)
编辑:
似乎发生在Parse.Query.find回调中,请参阅下面的代码注释。 所以它也不能在initialize方法中完成,但在其他地方呢?我怀疑Parse.Object与Bakbone.Model
不太相似find: function(options) {
var self = this;
options = options || {};
var request = Parse._request({
route: "classes",
className: this.className,
method: "GET",
useMasterKey: options.useMasterKey,
data: this.toJSON()
});
return request.then(function(response) {
return _.map(response.results, function(json) {
var obj;
if (response.className) {
obj = new Parse.Object(response.className); // <- no attributes or options used, blank object
} else {
obj = new self.objectClass(); // <- no attributes or options used, blank object
}
obj._finishFetch(json, true); // <- magically do things out of any constructor or parse function
return obj;
});
})._thenRunCallbacks(options);
},
答案 0 :(得分:0)
除了重新声明那个被诅咒的_finishFetch方法之外,我找不到其他方法:
original_finishFetch = _(Parse.Object.prototype._finishFetch)
Parse.Object.prototype._finishFetch = (serverData, hasData) ->
original_finishFetch.bind(@)(@parse(serverData), hasData)
这样就可以在parse方法中处理数据,因为它可以与任何Backbone Model或任何sdk which implements the Backbone Model interface.
一起使用