ember.js – 如何在Ember数据中嵌入一对一的关系?

我正在使用Ember 1.0-pre4.

我有两种模式,一对一的关系:

App.Lesson = DS.Model.extend                               
  timeslot: DS.belongsTo 'App.Timeslot'

App.Timeslot = DS.Model.extend
  lesson: DS.belongsTo 'App.Lesson'

我有一个适配器配置为在保存时将时隙嵌入课程中:

App.Adapter = DS.RESTAdapter.extend()  

App.Adapter.map App.Lesson,timeslot: { embedded: 'always' }             

App.Store = DS.Store.extend            
  revision: 11                                 
  adapter: App.Adapter.create()

然后我创建一个课程和一个时间段并尝试保存它们:

lesson = App.Lesson.createRecord
  group: group
lesson.set('timeslot',App.Timeslot.createRecord())

lesson.store.commit()

但是在保存时没有嵌入任何东西,我看到POST请求,一个用于课程,一个用于时间段.

我如何告诉Ember始终将时间段嵌入课程中?

解决方法

我认为这是一个错误,你应该报告它.筛选源代码并进行一些测试表明,createRecord根本没有考虑嵌入式配置.此配置仅用于序列化和反序列化过程.

当您调用createRecord时,会将一条记录添加到存储桶中,并在提交时使用ember-data简单地在存储桶中的每条记录上触发一条ajax帖子.

因此,为了回到你的代码,使用ember-data,你创建了两个记录,并且在提交时它将触发一个ajax post调用,其中Lesson对象嵌入了Timeslot,并且在后续调用中也将触发另一个ajax post对于Timeslot来说,这是最后一个记录.

lesson = QrTimetable.Lesson.createRecord
  group: group

lesson.set('timeslot',QrTimetable.Timeslot.createRecord())
lesson.store.commit()

除非有更好地理解余烬数据内容的人与我的观点相矛盾,否则我倾向于相信这是一个错误.

这是您提交事务时调用的最后一个代码.

createRecord: function(store,type,record) {
    var root = this.rootForType(type);

    var data = {};
    data[root] = this.serialize(record,{ includeId: true });

    this.ajax(this.buildURL(root),"POST",{
      data: data,context: this,success: function(json) {
        Ember.run(this,function(){
          this.didCreateRecord(store,record,json);
        });
      },error: function(xhr) {
        this.didError(store,xhr);
      }
    });
  },

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)