2015-05-17 7 views
7

Mam trasy z parametrem zdefiniowane:

$stateProvider 
.state('item', {..}) 
.state('item.view', { 
    url: 'item/:id' 
    template: '...', 
    controller: '...' 
}); 

Chociaż już w item.view państwo, chciałbym, aby przełączyć URL z

$state.go('item.view', {id: 'someId'}) 

bez ponownego ładowania strony. Próbowałem:

$state.go('item.view', {id: 'someId'}, {notify: false}); 
$state.go('item.view', {id: 'someId'}, {notify: false, reload: false}); 

Oba nadal powodują przeładowanie strony. Myślę, że może być uruchomiony na problem opisany tutaj: https://github.com/angular-ui/ui-router/issues/1758

+3

spójrz na ten wpis SO: [link] (http://stackoverflow.com/questions/23585065/angularjs-ui-router-change-url-without-reloading-state) wygląda na to, że możesz użyć '$ state.transitionTo' (zamiast '$ state.go') i ustaw opcjonalne parametry, aby uniknąć ponownego ładowania. Jeden z komentarzy (z największą liczbą głosów) w tym łączu sugeruje, co następuje: '$ state.transitionTo ('. Detail', {id: newId}, {location: true, inherit: true, relative: $ state. $ current, notify: false}), więc w zasadzie ustaw powiadomienie na false i location to true - Arjen de Vries, 6 października 14 na 15: 13' uznanie autora tego komentarza. –

Odpowiedz

2

To powinno być dość łatwe:

// It needs to be executed on main scope, hence $timeout 
// If you are calling from a controller this is a must 
// Otherwise it will 'lag' and update on next function call 
$timeout(function() { 
    // As Sheryar Abbasi commented, the rest is simple. 
    // You should call $state.transitionTo with notify: false 
    // to stop the reload. 
    $state.transitionTo(
     'item.view', 
     { 
      id: 4378 // New id/$stateParams go here 
     }, 
     { 
      location: true, // This makes it update URL 
      inherit: true, 
      relative: $state.$current, 
      notify: false // This makes it not reload 
     } 
    ); 
}); 

This StackOverflow thread pomógł mi dowiedzieć się $ limit czasu.

Here jest oficjalnym skrótem do interfejsu użytkownika.