2014-09-10 45 views
0

我的表单有主体和主题输入以及标签输入,因此用户可以输入任意数量的标签(保存到tagList),然后提交请求。问题:JSON.stringify(z)做这样的事情将对象添加到hasMany错误

新请求:{“subject”:“this is subject”,“body”:“this is body”,“tags”:[“fixture-0”的“夹具-1”]}

不但得不到标签要我输入的文字,我得到夹具-0 ...

import Ember from "ember"; 
export default Ember.ArrayController.extend({ 

    tagList: [], 

    actions: { 
     addRequest: function() { 

      var z = this.store.createRecord("Request", {body: this.get("body"), subject: this.get("subject")  
      }); 

      this.get("tagList").forEach(function(entry){ 
       console.log("adding tag to request: "+entry.get("tagt")); 
       z.get("tags").pushObject(entry); 
      }); 

      console.log("New request:" + JSON.stringify(z)); 

      z.save(); 

     }, 

     addTag: function(){ 

      console.log("adding " + this.get("tag")) 
      var t = this.store.createRecord("tag", {tagt: this.get("tag")}); 
      this.get("tagList").pushObject(t) 

     } 

    } 

}); 

回答

1

首先,我不认为你可以依靠JSON.stringify正确地将您的记录转换为JSON,这通常是序列化程序的工作。 (尽管我猜对象上的toJSON方法可能会推迟到串行器,但我不认为它确实如此。)

其次,这是Ember-Data的预期行为。文本的名称不在JSON中,因为它们不需要。您有一个hasMany关系,这意味着该记录只保留引用(ID)以标记对象。保持对象中的实际文本将会复制该信息。

作为一个方面说明,根据您使用Request作为模型类型名称的事实来判断,我可以很确定地说您正在使用Ember-Data不正确。这可能是您不希望Ember-Data行为的原因之一。我建议您阅读Ember's guide on models以更好地理解Ember-Data的用途,以及它为什么不适合您的用例。