मुझे गिटहब पर https://github.com/dgeb/ember_data_example के तहत एम्बर-डेटा के लिए एक अच्छा काम करने वाला उदाहरण मिला है और इसे नेस्टेड संसाधन ('has_many: टिप्पणियां') द्वारा विस्तारित करने का प्रयास करें। मूल उदाहरण में जब भी संपादन दृश्य चालू होता है तो एक नया लेनदेन बनाया जाता है और संपादन मोड को सहेजने पर इसे वापस/लुढ़काया जाता है।एम्बर-डेटा: नियंत्रक कार्यों के बीच लेनदेन में ऑब्जेक्ट को साझा और अपडेट कैसे करें?
मैं content.com में एक नई टिप्पणी जोड़ने के लिए चाहता हूं मैं इसे नहीं कर सकता और त्रुटि हो सकती है क्योंकि 'सामग्री' लेनदेन में पहले से ही है (त्रुटि: दावा विफल: एक बार रिकॉर्ड बदल गया है, तो आप इसे स्थानांतरित नहीं कर सकते एक अलग लेनदेन में)।
क्या विचार है कि मैं गलत महसूस करने की कोशिश करता हूं और मुझे एक और तरीका लेना चाहिए?
App.EditContactController = Em.Controller.extend({
content: null,
addComment: function() {
// ERROR here:
this.get('content.comments').addObject(App.Comment.createRecord({body: ''}));
},
enterEditing: function() {
this.transaction = this.get('store').transaction();
if (this.get('content.id')) {
this.transaction.add(this.get('content'));
} else {
this.set('content', this.transaction.createRecord(App.Contact, {}));
}
},
exitEditing: function() {
if (this.transaction) {
this.transaction.rollback();
this.transaction = null;
}
},
updateRecord: function() {
// commit and then clear the transaction (so exitEditing doesn't attempt a rollback)
this.transaction.commit();
this.transaction = null;
}
});