basicAdapter API を使用して createRecord を行うことに関して、いくつか質問があります。以下に示すように 2 つのモデルがあり、親レコードを作成し、応答を待ってから子レコードを作成すると仮定すると、これがその方法です。
App.Contact = DS.Model.extend({
address: DS.belongsTo("App.OneChild")
});
App.Address = DS.Model.extend({
street: DS.attr("string")
});
次に、ルート モデル フックまたはモデルでレコードを作成します。
contact = App.Contact.sync = {
createRecord: function(contact, process) {
process(contact).save();
});
},
contact.on('didCreate', async(function() {
address = App.Address.sync = {
createRecord: function(address, process){
process(address).save();
});
}
});
質問2
このようなネストされた投稿を行うこともできますか。これは実際のコードではありません。ブログ投稿hereからajax getJson find リクエストを作成するためのコードを調整しただけです。
App.Contact.sync = {
createRecord: function(contact, process) {
$.post("/contacts/1/addresses/create", { contact_name: id }).then(function(contact) {
process(contact)
.primaryKey('contact_name')
.camelizeKeys()
.save();
});
}
質問3
また、createRecord を呼び出す前に常に上記のように同期オブジェクトを定義する必要がありますか? その場合、同期関数が定義されているモデルからのみ createRecord を呼び出すことができるということですか? または、同期オブジェクトが定義された場所に関係なく、ルーターまたはコントローラーから createRecord を呼び出すこともできます。コードでのこの例は役に立ちます。
これを見てくれてありがとう。