Backbone.js 保存后如何从Parse.com检索对象
我正在使用主干框架和Parse.com作为后端服务为Phonegap创建一个应用程序。我使用Parse.com(对应于主干模型)创建了一个对象。 此对象有一个调用Parse.com函数save()的方法。 从视图调用此方法后,我希望检索更新的对象。 为此,我将“change”事件绑定到模型,但解析分配的ID未定义。 以下是模型的代码:Backbone.js 保存后如何从Parse.com检索对象,backbone.js,parse-platform,Backbone.js,Parse Platform,我正在使用主干框架和Parse.com作为后端服务为Phonegap创建一个应用程序。我使用Parse.com(对应于主干模型)创建了一个对象。 此对象有一个调用Parse.com函数save()的方法。 从视图调用此方法后,我希望检索更新的对象。 为此,我将“change”事件绑定到模型,但解析分配的ID未定义。 以下是模型的代码: var Match = Parse.Object.extend("Match", { states: {'DRAFT': 0, 'RUNNING': 1,
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,…})
。主干(和解析)默认情况下是乐观的。这意味着,您将设置模型的值,并期望持久化到服务器会成功
因此,您不需要检索任何额外的内容。模型已处于最新状态
为了使模型视图能够响应这些更改,我会对视图进行稍微不同的设计
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()
方法插入较新的主干事件