javascript - EXTJS 4-वैश्विक अपवाद श्रोता



extjs4 extjs-mvc (2)

अपने ऐप की शुरुआत में निम्नलिखित स्निपेट डालें। इस हर प्रतिक्रिया के साथ, चाहे वह किसी स्टोर या किसी फॉर्म या ... से है, चेक किया जाएगा और लॉगिन पेज पर रीडायरेक्ट किया जाएगा।

Ext.Ajax.on('requestexception', function (conn, response, options) {
    if (response.status === 403) {
        window.location = 'login';
    }
});

https://code.i-harness.com

मेरे पास एक ऐसी स्थिति है जहां मैं विभिन्न gridpanel आदि से सर्वर पर ajax अनुरोध कर रहा हूं। एक व्यवस्थापक क्षेत्र में।

यदि उपयोगकर्ता के लिए कोई गतिविधि नहीं है तो लॉग इन उपयोगकर्ता लॉग आउट हो जाएगा। 5 मिनट जो सामान्य है।

इस मामले में सर्वर लॉगिन पृष्ठ पर रीडायरेक्ट 403 वापस भेजता है।

अभी मैं एक डालने जा रहा हूँ:

listeners: {
    exception: function(proxy, response, operation, eOpts) {
        if (response.status == '403')
            window.location = 'login';
    }
}

प्रत्येक store's प्रॉक्सी जो थोड़ी अधिक है।

क्या कोई दयालु हो सकता है और मुझे बता सकता है कि मैं ExtJS और सर्वर के बीच सभी संचारों में श्रोता कैसे जोड़ सकता हूं?

मैं एमवीसी एप्लीकेशन आर्किटेक्चर का उपयोग कर रहा हूं, इसलिए यह शायद controller.js या app.js में एक लाइनर हो सकता है।

धन्यवाद


एक और पूरा समाधान, जिसमें यह एक पकड़ होगा-यह सब है:

Ext.util.Observable.observe(Ext.data.Connection, {
    requestexception: function(conn, response, options) {
        if(response.status == '403')
            window.location = 'login';
    }
});

ऐसा इसलिए है क्योंकि अंतर्निहित वर्ग, Ext.data.Connection न केवल Ext.data.Connection में उपयोग किया जाता है, साथ ही Ext.data.Proxy जिसे Ext.data.Store, Ext.data.Model द्वारा उपयोग किया जाता है। यह store.load() और store.load() जैसी कॉलों पर अपवादों को संभालता है। यह एक अधिक पूर्ण पकड़-सभी हैंडलर होना चाहिए।

मेरे ब्लॉग पोस्ट में और विवरण देखें





extjs-mvc