我目前正在使用ember.js,ember-resource和couchdb进行应用程序。
在我的数据模型中,我有一些嵌套资源,例如:克。
MyApp.Task = Ember.Resource.define({
url: '/tasks',
schema: {
id: String,
_rev: String,
title: String,
description: String,
comments: {
type: Ember.ResourceCollection,
itemType: 'MyApp.Comment',
nested: true
}
});
MyApp.Comment = Ember.Resource.define({
url: null,
schema: {
created: Date,
start: Number,
end: Number,
text: String
}
});
只要我最初在数据库中提供“完整”模型,一切正常,i。即具有空注释模型的任务。在这种情况下,我可以使用
为任务添加注释 var newComment = MyApp.Comment.create({ created: created, start: start, end: end, text: text });
var comments = task.get('comments');
comments.pushObject(newComment);
但是,我的初始task
数据没有嵌入式comments
,因此我必须以编程方式为嵌套注释创建Ember.ResourceCollection
。
我尝试了不同的方法并试图在ember-resource规范中找到一些代码,但我的尝试都没有用。
我的最新方法是
var comments = this.get('comments');
if (!comments) {
comments = Ember.ResourceCollection.create({type: MyApp.Comment, content: []});
this.set('comments', comments);
}
comments.pushObject(newComment);
但这也行不通。
所以我的问题是:如何在ember-resource
中创建嵌套模型结构并将其保存到数据库中?
非常感谢任何暗示!
更新
浏览ember-resource
的来源后,我找到了解决问题的方法之一:
var comments = this.get('comments');
if (!comments) {
this.updateWithApiData({comments: []});
comments = this.get('comments');
}
comments.pushObject(newComment);
方法updateWithApiData
似乎是从REST资源读取数据时使用的方法。
我仍然想知道这是否是最佳/正确的方法.....