मेरे एप्लिकेशन के एडाप्टर में, मैं AJAX त्रुटियों के आधार पर त्रुटि कोड लौटा रहा हूं। मैं इन्हें एप्लिकेशन रूट की त्रुटि विधि में प्रबंधित कर रहा हूं। यदि मैं लिंक-टू के माध्यम से मार्ग तक पहुंचता हूं तो यह बहुत अच्छा काम करता है। लेकिन अगर मैं एक मार्ग रीफ्रेश करता हूं या बस यूआरएल टाइप करता हूं, तो मेरे एप्लिकेशन के एरर हैंडलर को नहीं कहा जाता है। क्या कोई ऐसी जगह है जहां मैं यह त्रुटि प्रबंधन कर सकता हूं जिसे हर बार चलाने की गारंटी दी जाएगी? मैं वास्तव में एक ही मार्ग में "अगर 401, लॉगिन दिखाएं" कोड को लागू नहीं करना चाहता हूं।एम्बर में ग्लोबल अजाक्स त्रुटि को संभालने में मैं कहां रख सकता हूं?
मार्गों/application.js:
export default Ember.Route.extend({
actions: {
error: function(reason) {
if (reason === 401) {
alert('401');
this.send('showLogin');
}
},
एडेप्टर/application.js:
import DS from 'ember-data';
export default DS.ActiveModelAdapter.extend({
'namespace': '',
ajaxError: function(jqXHR) {
var error = this._super(jqXHR);
if (jqXHR && jqXHR.status === 401) {
return 401;
}
return error;
}
});
संपादित करें:
ऊपर कोड लगभग मेरे लिए काम किया। मुख्य मुद्दा जो मैंने मारा था, यह था। यूआरएल को रीफ्रेश करने या मारने पर यह .end ('showLogin') पकड़ा नहीं जा रहा था। एक transitionTo को यह बदल रहा है अच्छा काम करता है:
import Ember from 'ember';
export default Ember.Route.extend(ApplicationRouteMixin, {
actions: {
error: function(reason) {
if (reason === 401) {
this.transitionTo('login');
}
},
...
मुझे यह समस्या भी है और वैश्विक समाधान नहीं मिला। क्या आपने कभी इसे हल किया है? मैंने एक समान प्रश्न पोस्ट किया: http://stackoverflow.com/questions/29926638/ember-handling-401s-revisited-in-2015 – Confused
हाँ, मुझे अंत में यह काम मिल गया। उपरोक्त संपादन देखें। – Dennis