2013-02-11 11 views
7

विफल रहता है मैं ember.js के लिए बिल्कुल नया हूं और मैं कुछ प्रयोग कर रहा हूं। रिकॉर्ड्स को हटाने की कोशिश करते समय मैंने हाल ही में दीवार की एक बिट मारा। यहां मेरा संपादन मार्ग है (जिसमें से मैं हटाता हूं)रिकॉर्ड हटाने के दौरान, किसी अन्य मार्ग में संक्रमण

App.PostsEditRoute = Ember.Route.extend({ 
    model: function(params){ 
    return App.Post.find(params.id); 
    }, 
    exit: function() { 
    this._super(); 
    tx = this.get('currentModel.transaction'); 
    if(tx) 
     tx.rollback(); 
    }, 
    setupController: function(controller, model){ 
    controller.set('content', model); 
    }, 
    events: { 
    save: function(post){ 
     post.one('didUpdate', this, function(){ 
     this.transitionTo('posts.show', post); 
     }); 
     post.get('transaction').commit(); 
    }, 
    cancel: function(){ 
     this.transitionTo('posts.show', post); 
    }, 
    destroyPost: function(context) { 
     var post = context.get('content'); 
     post.deleteRecord(); 
     post.get('store').commit(); 
     this.transitionTo('posts.index'); 
    } 
    } 
}); 

तो मेरे पास एक लिंक है जिसके माध्यम से मैं नष्ट करता हूंपोस्ट। रिकॉर्ड सफलतापूर्वक हटा दिया गया है, और मैं इंडेक्स रूट में संक्रमण करना शुरू कर देता हूं, लेकिन एक त्रुटि होती है ...

असीमित त्रुटि: स्थिति में स्थिति rollback को स्थिति में रखने के लिए प्रयास किया गया था rootState.deleted.inFlight। अपरिभाषित

के साथ कॉल किया गया, इसके बाद, इंडेक्स पेज के लिए मॉडल लोड करना बंद हो जाता है और मुझे एक खाली पृष्ठ मिलता है। मैं आवश्यक अतिरिक्त कोड प्रदान कर सकता हूं। सूचकांक मार्ग यहां है।

App.PostsIndexRoute = Em.Route.extend({ 
    model: function(){ 
    return App.Post.find(); 
    }, 
    setupController: function(controller, model){ 
    controller.set('content', model); 
    } 
}); 

मुझे ध्यान रखना चाहिए कि ये दोनों मार्ग सही ढंग से लोड होते हैं। यह केवल संक्रमण में है कि मुझे विफलता मिलती है।

उत्तर

4

आपको didDelete पर बाध्य करने की आवश्यकता है जैसे आपने सहेजने के तरीके में didUpdate के साथ किया था।

destroyPost: function(context) { 
    var post = context.get('content'); 
    post.one('didDelete', this, function() { 
     this.transitionTo('posts.index'); 
    }); 
    post.deleteRecord(); 
    post.get('transaction').commit(); 
} 

इसके अलावा, अपने कोड थोड़ा असंगत लगता है: बचाने के विधि में आप एक अलग लेन-देन के लिए प्रतिबद्ध हैं, जबकि destroyPost में आप पूरी दुकान अटका रहे हैं।

+1

यह काम किया। मैंने कोड कहीं और खींच लिया; मैं बस इस बिंदु पर सीखने की कोशिश कर रहा हूं। हालांकि दस्तावेज़ों को बेहतर ढंग से पढ़ना चाहिए था। मुझे सही दिशा बताने के लिए धन्यवाद। – sentinel21

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

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