backbone.js 用createBean创建模型和js文件中的这个.model有什么区别?

r7s23pms  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(132)

我已经做了20天的实验来找出其中的差别。

console.log (self.model);

在/custom/modules/Emails/clients/base/views/preview/preview. js中,并且是的,我在那里进行异步操作,这就是我使用self的原因;我就这么做了。

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中不存在
我是否遗漏了与核心功能或 Backbone.js 相关的任何内容?
我正在尝试像这样启动电子邮件抽屉。

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
2w3kk1z5

2w3kk1z51#

我猜你之后用了accountsBean.fetch({success:console.log})吧?
最好在fetch选项中指定fields(字段名数组)或view(视图名称),以便让服务器知道您需要哪些字段--因为默认情况下并不是所有字段都会被传输(以保存带宽并提高性能)。
如果您不指定这些选项中的任何一个,服务器将只加载一些可能不包含所有字段的默认值。
例如:尝试

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

这将导致模型包含在预览viewdef中指定的字段。
如果您只想获取某些字段,则可以使用例如

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

5t7ly7z52#

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

({
  extendsFrom: 'SubpanelListView',
  initialize: function(options){
     this._super('initialize', [options]);
     this.context.on('list:drawereditrow:fire',this.drawerEditClicked, this);
  },
  drawerEditClicked: function(model){
    app.drawer.open({
       layout:'create-actions',
       context:{
         create: true,
         model: model,
         module:'oppp_Opportunity_Products',
       }
    });
  },
   _dispose: function() {
     this._super('_dispose');
   },
});

有关更多信息,请查看此Link

相关问题