2013-10-25 5 views
7

के साथ काम नहीं करता है मैंने ui-router पर स्विच किया है। सबकुछ सुचारू रूप से चला गया, एक चीज़ को छोड़कर। मेरे पृष्ठ पर मेरे पास एक ऐसा चयन है जो एप्लिकेशन के संदर्भ को बदलता है। वैसे भी, पहले से है, जब इस संदर्भ बदल गया था मैं इस कोड को क्रियान्वित किया गया था (विशेष रूप से, सेट विधि):

'use strict'; 
angular.module('main').factory('lacContext', ['$route', function ($route) { 
    return { 
     set: function (id) { 
      sessionStorage.setItem("lac-context", id); 
      $route.reload(); 
     }, 
     get: function() { 
      return sessionStorage.getItem("lac-context"); 
     } 
    }; 
}]) 

और

$route.reload() 

सबसे महत्वपूर्ण बात कर रहा था। यह पृष्ठ को फिर से लोड किया गया। लेकिन यूई-राउटर पर स्विच करने के बाद, $ रूट.रलोड कुछ भी नहीं करता है। इसके अलावा मुझे यूई-राउटर एपीआई में समकक्ष नहीं मिला। इस मुद्दे को कैसे हल करें?

+0

क्या आप त्रि हैं ed '$ state.go ('।')'? – Chandermani

+0

नहीं। मैं वर्तमान स्थिति का उपयोग कैसे कर सकता हूं? – dragonfly

+1

आपको '$ राज्य' सेवा इंजेक्ट करने की आवश्यकता है क्योंकि आप' $ रूट' करते हैं तो आप इस विधि को कॉल कर सकते हैं। दस्तावेज़ीकरण देखें https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stategoto--toparams--options – Chandermani

उत्तर

5

ठीक है यह काम करता है जब मैं नियंत्रक में $ राज्य इंजेक्ट करता हूं।

लेकिन जब इसे कोड स्निपेट जैसी सेवा में इंजेक्शन दिया जाता है, तो निश्चित रूप से $ राज्य अनिर्धारित था।

हालांकि

$state.go('.') 

काम नहीं किया, मैं कुछ इस तरह किया:

$stateProvider 
     .state('home', { 
      controller: function ($state) { 
       $state.go('advisoryLeadOffering.packages'); 
      } 
     }) 
     .state('advisoryLeadOffering.packages', { 
      url: "/packages", 
      templateUrl: "/AdvisoryLeadOffering/Packages", 
      controller: 'AdvisoryLeadOfferingPackages' 
     }) 

और मैं कुछ इस तरह करते हैं, जब मैं फिर से लोड करने की आवश्यकता है:

$state.transitionTo('home'); 

दायरे के अंदर तरीका।

+0

+1 मुझे संक्रमण के लिए इंगित करने के लिए +1()। – Jesse

36

कैसे के बारे में:

$state.go($state.$current, null, { reload: true }); 
+0

यह मेरे लिए काम किया! – bobber205

+0

यह $ state.go नहीं होना चाहिए ($ state.current, null, {reload: true}); ? –

0

मैं एक ऐसी ही समस्या है जहाँ मैं नियंत्रक एक राज्य को ताज़ा करने के बाहर एक लिंक करना चाहता था और बस नियंत्रक में एक reload() समारोह बनाया था।

SomeCtrl: मुझे transitionTo() की ओर इशारा करते के लिए

ng-click="reload()" 

एच/टी @dragonfly:

$scope.reload = function(){ 
    $state.transitionTo('myState'); 
} 

अपने लंगर को यह जोड़ें।

7

आप $state.reload()

कर सकते हैं वहाँ कभी कभी नहीं नियंत्रक फिर से instantiating इसके साथ एक बग है। आपको लगता है कि चारों ओर

$state.transitionTo($state.current, $stateParams, { reload: true, inherit: true, notify: true }); 
0

केवल एक चीज मेरे लिए काम किया साथ प्राप्त कर सकते हैं:

$state.go('redirect', {to: $state.current.name}, {reload: true}); 
:

$stateProvider.state('redirect', { 
    url: 'redirect/:to', 
    controller: function($state, $stateParams, $scope) { 
     $state.go($stateParams.to, null, {reload: true}); 
    } 
}); 

जाओ इस राज्य के लिए:

राज्य अनुप्रेषित बनाएं