AngularJS का उपयोग करके पुनर्निर्देशित करें


86

मैं दूसरे मार्ग का उपयोग करने के लिए पुनर्निर्देशित कर रहा हूं:

$location.path("/route");

लेकिन किसी कारण से यह काम नहीं कर रहा है। मैंने jQuery- यूआई का उपयोग करके एक ऑटो-पूर्ण विजेट किया और उपयोगकर्ता द्वारा किसी विकल्प का चयन करने के बाद मैं कार्यक्षेत्र से एक फ़ंक्शन को बुला रहा हूं। मैंने इसे डिबग किया और यह फ़ंक्शन में प्रवेश करता है लेकिन इसे कभी भी अन्य रूट पर रीडायरेक्ट नहीं किया जाता है। जब मैं एक कुंजी दबाता हूं तो यह केवल मार्ग बदलता है।

मुझे लगता है कि यह अजीब तरह का है, लेकिन मुझे यह पता नहीं चला है कि इसे कैसे हल किया जाए। मैंनें इस्तेमाल किया

window.location = "#/route";

और यह काम करता है लेकिन मैं path()फ़ंक्शन का उपयोग करना चाहता हूं ।

किसी को भी पता नहीं है कि ऐसा क्यों हो रहा है?

जवाबों:


109

काम न करने वाले कोड के उदाहरण के साथ, इस प्रश्न का उत्तर देना आसान होगा, लेकिन इस जानकारी के साथ सबसे अच्छा जो मुझे लगता है कि आप $ लोकेशन कह रहे हैं।

निर्देश पर ऐसा करने का प्रयास करें scope.$apply(function() { $location.path("/route"); });


बहुत बहुत धन्यवाद और काम नहीं करने का उदाहरण पोस्ट नहीं करने के लिए मुझे खेद है। लेकिन यह मेरे कोड की जरूरत थी।
टॉमार्टो

23
किसी भी विचार कैसे एक $ http अनुरोध के अंदर .success विधि में काम करने के लिए इसे पाने के लिए? @ टोमार्टो
निकोलस क्रेडीबर्ग

2
फ़ायरफ़ॉक्स (30 ~) कंसोल में एक त्रुटि होती है कि $ लागू चक्र व्यस्त है
svarog

1
यह कैसे काम करना है? मुझे निम्न त्रुटि मिल रही है: त्रुटि: [$ rootScope: inprog] $ पहले से ही प्रगति त्रुटियों में लागू होती है । इसलिए, यह windows.location = '' के रूप में काम नहीं कर रहा है ..
वैभव

1
@ निकोलस क्रेडबर्ग का एक ही सवाल था और सिर्फ $ स्कोप जोड़ना। $ लागू होना (); $ ठिकाने के बाद.पथ ("/ मार्ग"); मेरे लिए काम किया।
अर्नेस्टो एलेली

82

$locationकंट्रोलर में इंजेक्ट करना न भूलें ।


2
अच्छी पकड़ - यही मेरे लिए समस्या थी।
जेसन स्विट

अच्छा लगा, इस पोस्ट के लिए धन्यवाद, जो इतना स्पष्ट लग रहा था वह नहीं था।
चक कॉनवे

20

मान लें कि आप html5 रूटिंग का उपयोग नहीं कर रहे हैं, तो प्रयास करें $location.path("route")। यह आपके ब्राउज़र को रीडायरेक्ट करेगा, #/routeजो आप चाहते हैं।


15

यदि आपको अपने कोणीय अनुप्रयोग के उपयोग से पुनर्निर्देशित करने की आवश्यकता है $window.location। यही मेरा मामला था; उम्मीद है कि कोई इसे उपयोगी पाएगा।


2

अपनी रूटिंग विधि की जाँच करें:

यदि आपकी रूटिंग स्थिति इस प्रकार है

 .state('app.register', {
    url: '/register',
    views: {
      'menuContent': {
        templateUrl: 'templates/register.html',
      }
    }
  }) 

तो आप का उपयोग करना चाहिए

$location.path("/app/register");

0

आपके कोड को जाने बिना कहना मुश्किल है। मेरा सबसे अच्छा अनुमान है कि एonchange जब आप जावास्क्रिप्ट कोड से अपना टेक्स्टबॉक्स मान बदलते हैं तो यह घटना फायरिंग नहीं होती है।

इसके काम करने के दो तरीके हैं; पहला फोन करना हैonchange अपने आप , और दूसरा ध्यान खोने के लिए टेक्स्टबॉक्स की प्रतीक्षा करना है।

इस प्रश्न की जाँच करें ; एक ही मुद्दा, विभिन्न ढांचे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.