我一直试图通过代码将电子邮件地址添加到电子邮件模型的to_collection字段中。 to_collection已经有一些方法,如添加,创建,删除。我尝试使用创建一个函数,但每当我使用时,我在to_collection模型中的电子邮件地址设置为空白。
所以这就是我正在做的事情
var email = app.data.createBean('Emails', {id: <email_id> });
email.fetch({
view:'record',
success:__bind(function (data) {
console.log('[TEST]',data);
var prefill = app.data.createBean('Emails');
prefill.copy(data);
prefill.unset("to_collection");
var to_col = data.get('from_collection').models[0];
to_col.link.name = 'to';
to_col.set('_link','to');
var t = data.get('to_collection');
//t.create(to_col)
},this)
})
这些是第一个控制台日志的属性值,如果我不使用t.create(to_col);
date_modified:"2018-03-14T00:06:36+05:30"
email_address:"xxx@gmail.com"
email_address_id:"69895ac6-e32e-11e7-b6fd-02ee7fb3392f"
email_addresses:
{email_address: "xxx@gmail.com", id: "69895ac6-e32e-11e7-b6fd-02ee7fb3392f"}
id:"a9e537b6-1704-11e8-bf1e-02b02daff135"
parent:[]
parent_id:""
parent_name:""
parent_type:""
_acl:
{fields: {…}}
_link:"to"
_module:"EmailParticipants"
如果我使用t.create(to_col);
它显示空白email_address:""
答案 0 :(得分:1)
在Sugar 7.9中测试
由于这是我们正在讨论的抽屉,您可以将地址作为System.in
数组传递,Sugar将使用它们预填充到:输入栏。如果用户未删除,则会在保存时将其添加到context.prepopulate.to_addresses
。
E.g。在浏览器的JS控制台中尝试这个(在Sugar中):
to_collection
在Sugar 7.11中测试
在7.9之后的电子邮件模块中,似乎有必要使用预先存在的电子邮件地址bean。
有一个utils函数可以打开抽屉并接受App.drawer.open({
layout: 'compose',
context: {
create: true,
module: 'Emails',
prepopulate: {
to_addresses: [
{email: "example@whatever.fake"},
{email: "example2@whatever.fake", name: "Example Two"},
],
}
}
})
参数对象中的/ cc / bcc电子邮件地址Bean集合(或属性数组)数组。
data
因为你已经有一个来自不同模型的to_collection,你可以这样做:
openEmailCreateDrawer: function(layout, data, onClose)
也可以使用相同的App.utils.openEmailCreateDrawer(
'compose',
{
to: data.get("to_collection")
}
)
参数预填充主题,html正文和附件。
e.g。使用您的变量可能如下所示:
data
这是基于负责解析app.utils.openEmailCreateDrawer(
'compose-email',
{
to: data.get("to_collection"),
name: subject,
description_html: body,
attachments: attachments
}
)
中上述函数data
的辅助函数的注释:
utils.js
答案 1 :(得分:1)
Well I did solve this issue by doing following
prefill.get('to_collection').create({
deleted: false,
email_address: to_coll.get('email_address'),
email_address_id: to_coll.get('email_address_id'),
_link: "to"
});
But, I don't know this is a proper way or not.