我的表单包含正文和主题输入以及标记输入,因此用户可以输入任意数量的标记(保存到tagList),然后提交请求。问题:JSON.stringify(z)执行类似这样的操作
新请求:{"主题":"这是主题","正文":"这是正文"," ;标签":["灯具-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)
}
}
});
答案 0 :(得分:1)
首先,我不认为您可以依靠JSON.stringify
将您的记录正确转换为JSON,这通常是序列化程序的工作。 (虽然我猜对象上的toJSON
方法可能会遵循序列化程序,但我不认为它会这样做。)
其次,这是Ember-Data的预期行为。 JSON中的文字名称不是因为它们不是必需的。您有一个hasMany
关系,这意味着该记录仅保留对标记对象的引用(ID)。保持对象中的实际文本将复制该信息。
作为旁注,从您使用Request
作为模型类型名称这一事实来判断,我可以很好地确定您是否正在使用Ember-Data不正确。这可能是您不希望Ember-Data按原样行事的部分原因。我建议阅读Ember's guide on models以更好地了解Ember-Data的用途,以及为什么它可能不适合您的用例。