我正在构建一个允许用户发布到 Twitter 的应用程序。当他们单击提交按钮时,我们会关闭发布表单。我们创建一个 Message 对象,该对象保存到数据存储并发送到服务器。服务器创建一个 Post 对象,然后向 Twitter 提交一个请求。然后服务器更新 Post 对象,用更新的信息回复 UI。
那部分已经开始工作了。但是我需要知道它是否不起作用,以便我可以提醒用户他们的消息没有通过并保持发布表单打开。这是有关我的应用程序的一些相关信息。
Social.Message = DS.Model.extend({
text: DS.attr("string"),
created: DS.attr("date"),
isPending: DS.attr("boolean"),
posts: DS.hasMany("Social.Post")
});
Social.Post = DS.Model.extend({
text: DS.attr("string"),
status: DS.attr("string"),
created: DS.attr("date"),
message: DS.belongsTo("Social.Message"),
msgStatus: function() {
return ((this.get('status') === 'S') ? true : false);
}.property('status')
});
帖子(状态)的生命周期从 P(待处理)到 Q(排队)再到 S(已发送),E(错误)也是一种可能性,也是我真正想要的状态。这是 saveMessage 方法:
saveMessage: function(text){
var acct = Social.Account.find(this.get("id")),
msg = Social.store.createRecord(
Social.Message,
{
text: text,
created: new Date()
}
);
acct.get("messages").addObject(msg);
Social.store.commit();
Ember.run.later(this, function() {
msg.get('posts').forEach(function(p){
p.reload();
});
}, 1000);
}
您可以看到我暂停了一秒钟让服务器处理,然后尝试使用来自 Twitter 的响应重新加载 Post 对象。最后几行是我认为这个新代码会去的地方,但我不确定如何听一些可能不会回来的东西。我宁愿不要“等待”一秒钟,如果消息可以更新就好了。不知道如何做到这一点。
想法?