2012-12-19 10 views
6

मुझे गिटहब पर 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; 
    } 
}); 

उत्तर

1

मुझे लगता है कि आप मैं क्या किया से प्रेरणा ले सकता है: https://github.com/sly7-7/ember_data_example/commit/57ee7ea6ca44e3a2fbba96fff4ad088a8d786a3c

शायद बस this.get('content.comments').createRecord({body: ''}) कर काम करेंगे। यह कॉल ManyArray.createRecord() को संदर्भित करता है, और नए रिकॉर्ड बनाने के लिए रिश्ते के मालिक के लेनदेन का उपयोग करता है। देखें https://github.com/sly7-7/data/blob/master/packages/ember-data/lib/system/record_arrays/many_array.js#L163

संबंधित मुद्दे