如何在保存后从Parse.com中检索对象
问题描述:
我正在使用Backbone框架和Parse.com为后端服务创建Phonegap应用程序。我用Parse.com创建一个对象(对应于骨干模型)。 此对象有一个调用Parse.com函数save()的方法saveDraftToP()。 从视图调用此方法后,我想检索更新的对象。 为此,我将“更改”事件绑定到模型,但分析分配的ID未定义。 这里是模型的代码:如何在保存后从Parse.com中检索对象
var Match = Parse.Object.extend("Match", {
states: {'DRAFT': 0, 'RUNNING': 1, 'ENDED': 2},
saveDraftToP: function() {
var self = this;
this.save({
user: Parse.User.current(),
ACL: new Parse.ACL(Parse.User.current()),
state: self.states.DRAFT
}, {
success: function (result) {
self = result;
},
error: function (e) {
}
});
}
});`
这里是视图的代码:我不明白为什么你已经保存功能封装到另一个保存样
var vmNuovaPartita = Parse.View.extend({
template: Handlebars.compile(template),
model: new Match(),
collection: new HintCollection(),
initialize: function() {
this.bind("change:model", console.log(this.model.id) , this);
},
render: function (eventName) {
var match = this.model.toJSON();
$(this.el).html(this.template(match));
return this;
}
});
答
功能。 :-)
假设你有类似myMatch
这是一个对象。
通过您的用户界面,按钮点击保存对象数据。您可以直接使用myMatch.save({attr:val, ...})
开箱即用。 Backbone(和Parse)默认情况下是乐观的。这意味着,您将设置模型的值,并期望持续到服务器的成功。
因此,你不需要检索任何额外的东西。您已经拥有最新状态的模型。
要有一个模型视图来响应这些变化,我会设计视图有点不同。
var vmNuovaPartita = Parse.View.extend({
template: Handlebars.compile(template),
initialize: function() {
this.model.on('change', this.render);
},
render: function (eventName) {
var match = this.model.toJSON();
$(this.el).html(this.template(match));
return this;
}
});
var myView = new vmNuovaPartita({
model: myModel
});
我初始化视图之外的模型,然后把它作为一个选项,当您生成一个新的视图。当你传递一个模型作为选项时,它是特殊的,将直接附加到视图... view.model,你可以在你的视图代码内引用this.model
在init中,我们放置一个监听器改变事件的模型,然后发射视图的重新渲染。或者更好的方法是使用.listenTo()
方法引入新的Backbone Events。