我有一个应用程序,允许我创建一条消息,可以发送到N个社交网络,建模如下:
Social.Account = DS.Model.extend({
username: DS.attr("string"),
messages: DS.hasMany("Social.Message")
});
Social.Message = DS.Model.extend({
text: DS.attr("string"),
account: DS.belongsTo("Social.Account")
});
我创建记录的代码如下所示:
saveMessage: function(){
var account = Social.Account.find(this.get("id")),
msg = Social.store.createRecord(
Social.Message,
{
text: postingWindow.get('text'),
account: account,
}
);
account.get("messages").addObject(msg);
Social.store.commit();
}
表单数据如下所示:
text:testing one three five seven
message_key:
tags:
user_id:
created:Wed, 19 Jun 2013 21:39:14 GMT
scheduled_at:2013-06-20T03:00:00.000Z
is_editing:false
status:C
account:56
那部分效果非常好。现在,我们正在努力安排未来的消息,这使用户有机会在他们被保存之后,但在他们被发送之前进行编辑。从表面上看,我的实现似乎工作正常,但我注意到Ember没有发送帐户信息和帖子,这意味着当我的服务器代码运行时,消息在数据库中被孤立。这是更新代码:
sendNow: function(message){
var account = Social.Account.find( this.get('controllers.account.id') );
message.setProperties({
scheduled_at: '',
accounts: [account]
// I've also tried accounts: this.get('controllers.account.id')
});
Social.store.commit();
}
以及相应的表格数据:
text:testing one three five seven
message_key:
tags:
user_id:17
created:Wed, 19 Jun 2013 21:39:14 GMT
scheduled_at:
is_editing:false
无论我做什么,Ember都不会将帐户数据发送到服务器。是否有更合适的方法来更新记录并使其正确保存?
答案 0 :(得分:0)
你可以尝试:
message.get('accounts').pushObject(account')
答案 1 :(得分:0)
您确定正在设置var帐户吗?好像你与get语句不一致:
var account = Social.Account.find(this.get("id"))
,< - 双引号
var account = Social.Account.find(this.get('controllers.account.id'));
< - 单引号和不同的对象结构?
另外,你试过:
message.set('accounts', account);