Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript EmberJS:正在创建具有belongsTo的记录_Javascript_Ember.js_Ember Data - Fatal编程技术网

Javascript EmberJS:正在创建具有belongsTo的记录

Javascript EmberJS:正在创建具有belongsTo的记录,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,让我用帖子和评论来描述我的问题。在我的帖子控制器中,我希望为当前帖子的评论创建一个新记录。余烬是如何做到这一点的 关系设置如下: App.Post = DS.Model.extend({ comments: hasMany('comment'), }); App.Comment = DS.Model.extend({ post: belongsTo('post') }); 在我的post_控制器中,我想创建一个记录。我在一个由模板触发的操作中有以下内容: App.PostContr

让我用帖子和评论来描述我的问题。在我的帖子控制器中,我希望为当前帖子的评论创建一个新记录。余烬是如何做到这一点的

关系设置如下:

App.Post = DS.Model.extend({
  comments: hasMany('comment'),
});

App.Comment = DS.Model.extend({
  post: belongsTo('post')
}); 
在我的post_控制器中,我想创建一个记录。我在一个由模板触发的操作中有以下内容:

App.PostController = Ember.ObjectController.extend({
  ...
  actions: {
    createComment: function() {
      var post = this.get('model'); // Edit: Forgot that I had this declared outside createRecord
      var comment = this.store.createRecord('comment', {
        content : "content",
        post : post // This is where the problem is
      });
    }
  }
});
但是,我得到一个错误,它是:uncaughttypeerror:无法读取未定义的属性“post”

我如何声明这种关系?谢谢

编辑: ember数据错误来自ember-data.js中的此内部函数:

return Ember.computed(function(key, value) {
    var data = get(this, 'data'),
        store = get(this, 'store'), belongsTo, typeClass;

    if (typeof type === 'string') {
      typeClass = store.modelFor(type);
    } else {
      typeClass = type;
    }

    if (arguments.length === 2) {
      Ember.assert("You can only add a '" + type + "' record to this relationship", !value || value instanceof typeClass);
      return value === undefined ? null : value;
    }

    belongsTo = data[key]; // ERROR OCCURS HERE! 

    if (isNone(belongsTo)) { return null; }

    store.fetchRecord(belongsTo);

    return belongsTo;
  }).property('data').meta(meta);
};
编辑:问题已解决


问题是我给了注释一个名为data的属性。该属性与内部余烬冲突。删除它使我上面的代码工作正常

如果您在createRecord之外声明您的帖子(即-var comment=行上方)

var postModel=this.get('model')

createRecord范围内的“this”关键字可能存在问题

更新


另外,对于this.get('model')和this.get('content')(从该范围之外)您是否得到了相同的结果?

Hi Toran!很抱歉,我实际上是在createRecord函数之前声明的,就像你建议的那样,但是当我在中复制这些东西时,一定错过了。所以你是对的。我应该在我的问题中解决这个问题。此外,this.get('content')==this.get('model')返回true,因此它们是相同的。你还有其他线索吗?非常感谢您的光临!我知道上面没有显示,但是你确定你的关系是嵌入的而不是异步的吗?我只是问,因为上面显示的异步“set”被破坏了,关系不是异步的。我在提出问题时已宣布。我尝试在我的评论模型中添加
post:belongsTo('post',{embedded:'always'})
,但是错误是一样的。嘿,托兰,问题解决了。这个修正并不是我最初所想的,这里的任何人都不可能理解,因为我没有在注释模型中包括除了belongsTo之外的其他属性。我有一个名为
data
的属性。这与内部余烬数据冲突。很抱歉给你添麻烦。我将发布一个编辑。