5

समस्या वक्तव्य पैरामीटर के साथ पिछले राज्य पाने के लिए:कैसे का उपयोग कर ui रूटर

मैं एक बटन है "टिप्पणी जोड़ने के", मैं केवल जब मैं प्रणाली में लॉग इन किया है टिप्पणी जोड़ने के लिए सक्षम होना चाहिए।

लेकिन समस्या यह है कि मैं लॉगिन के बाद "टिप्पणी जोड़ें" पृष्ठ पर वापस नहीं आ सकता, क्योंकि मुझे पिछली स्थिति नहीं पता है या पिछली स्थिति नहीं मिल सकती है।

क्या इसका कोई क्लीनर समाधान है? क्या मेरे पास लॉगिन पेज एक नए पृष्ठ की बजाय एक मोडल होना चाहिए?

मैंने पिछले प्रश्नों के बारे में सभी प्रश्नों को देखा है और संभावित उत्तर भी हैं (हां, मैं लगभग $ जेलकोप और $ stateChangeSuccess ले रहा हूं)। लेकिन यह स्पष्ट रूप से समाधान आगे नहीं रखता है।

अन्य संभावित समाधान है नीचे http://christopherthielen.github.io/ui-router-extras/example/previous/index.html#

के रूप में मैं भी https://github.com/angular-ui/ui-router/issues/92 देखा। लेकिन फिर से, मुझे यकीन नहीं था कि सही जवाब क्या है।

क्या कोई स्पष्ट रूप से एक अच्छा समाधान बता सकता है। जड़ का उपयोग एक अच्छा है?

+0

आप एक 'returnUrl' पैरामीटर (या' returnState') लॉगिन राज्य के लिए जोड़ सकते हैं लॉगिन राज्य के लिए, और फिर इसे सेट रीडायरेक्ट करने पर होगा। –

+0

मैंने इस समाधान के बारे में सोचा। लेकिन फिर मुझे वापसी यूआरएल के साथ पारित होने वाले मानकों के बारे में सोचना चाहिए। यह थोड़ा कठिन है –

उत्तर

13

क्या मेरे पास लॉगिन पृष्ठ एक नए पृष्ठ की बजाय एक मोडल होना चाहिए? यह एक डिजाइन निर्णय है। आप जो भी ऐप फिट बैठ सकते हैं और आपकी पसंद के अनुसार हो सकते हैं।

जड़ें का उपयोग कर एक अच्छा है? मुझे लगता है कि यह काफी अच्छा समाधान है। यहाँ कैसे मैं यह कर देगा:

पहले वाली स्थिति मैन्युअल रूप से बचाओ:

$rootScope.$on('$stateChangeSuccess', function(event, to, toParams, from, fromParams) { 
     //save the previous state in a rootScope variable so that it's accessible from everywhere 
     $rootScope.previousState = from; 
    }); 
    }]); 

इसके बजाय ui-sref का उपयोग कर के, टिप्पणी बटन के लिए एक क्लिक समारोह डाल:

एक राज्य परिवर्तन श्रोता बनाएं ।

$scope.commentHandler = function(){ 
    //check if user is logged in, let the user post the comment 

    //else take him to login page 
} 

तो फिर तुम $state.go($rootScope.previousState.name) उपयोग कर सकते हैं के बाद उपयोगकर्ता में लॉग इन किया है टिप्पणी पृष्ठ पर वापस जाने के लिए।

-OR -

आप "टिप्पणी पोस्ट करें" के स्थान पर एक छोटा सा लॉगिन बॉक्स प्रदान बटन उपयोगकर्ता के प्रवेश करता है, तो हो सकता है नहीं

+1

यह मेरे लिए अच्छा काम करता है। – AdeelMufti

0

ui रूटर v1.0.0 +, स्थिति परिवर्तन घटनाओं के लिए। deprecated रहे हैं।

Arjun's स्थिति परिवर्तन श्रोता का एक अद्यतन संस्करण

$transitions.onStart({}, function (transition) { 
    $rootScope.previousState = transition.from(); 
}); 
संबंधित मुद्दे