使用createBean创建的模型与js文件中存在的this.model有什么区别?

时间:2018-03-09 14:13:31

标签: backbone.js sugarcrm

我从2天开始做实验来找出差异。 所以我已经把

console.log (self.model);

在/custom/modules/Emails/clients/base/views/preview/preview.js中,是的,我在异步操作中,这就是为什么我使用自我; 我这样做了。

var accountsBean = app.data.createBean('Emails', {id:self.model.get('id)')});

但我发现它们之间存在很大差异。 self.model有to_collection,from_collection填充数据,而这些字段在accountsBean中为空,但to_addrs_names,from_addr_name已填充,而self.model中不存在这些

我是否缺少与核心功能或骨干相关的任何内容?

我试图像这样启动电子邮件抽屉。

                var accountsBean = app.data.createBean('Emails', {id: self.model.get('id)')});
                accountsBean.fetch({
                    view: "compose-email",
                    success: function (col,data) {
                        console.log(data);
                        var prefill = app.data.createBean('Emails');
                        prefill.copy(data);
                        app.drawer.open({
                            layout: 'compose-email',
                            context: {
                                create: true,
                                model: prefill,
                                module: 'Emails',
                            }
                        })
                    }
                })

即使我使用

var prefill = app.data.createBean('Emails'); prefill.copy(data);

我收到错误

FATAL[2018-3-9 16:40:8]: Uncaught TypeError: e.has is not a function

如果我只是在上下文中传递数据

app.drawer.open({
          layout: 'compose-email',
          context: {
          create: true,
          model: data,
          module: 'Emails',
          }
})

然后我发现了这个错误。

FATAL[2018-3-9 17:6:19]: Uncaught TypeError: this.model.on is not a function

2 个答案:

答案 0 :(得分:0)

我假设您之后使用了accountsBean.fetch({success:console.log})

在提取选项中指定fields(字段名称数组)或view(视图名称)总是一个好主意,让服务器知道您需要哪些字段 - 因为默认情况下不会传输所有字段(以节省带宽和提高性能)。

如果您没有指定任何这些选项,服务器只会加载一些默认值,但可能不包含所有字段。

e.g。试试

accountsBean.fetch({
    view: "preview",
    success: console.log
})

这会导致模型包含预览viewdef中指定的字段。

如果您只想获取某些字段,可以使用例如

accountsBean.fetch({
    fields: ["from_collection", "to_collection"],
    success: console.log
})

答案 1 :(得分:0)

HI如果您只想在抽屉中打开模块请检查此代码。

$("#hidenavbarlink").click(function(){
     $("#nav").hide();
});

有关详细信息,请查看此Link

相关问题