2016-09-12 5 views
3

ui-sref은 두 개의 문자열과 객체를 매개 변수로 사용합니다. 모든 정상적인 상황에서 잘 작동하지만, 내가 개체를 탐색 한 페이지에서 브라우저를 새로 고칠 때 null이됩니다.브라우저에서 ui-router 매개 변수를 유지하는 방법

URL의 두 문자열은 새로 고침 후에 문제가 없습니다. 페이지가 새로 고쳐진 후 $stateparams에 개체가 지속되도록하는 방법이 있습니까? $rootscope.$stateparams = $stateparams과 같은 몇 가지 옵션을 시도했지만 서비스를 사용해 보았지만 새로 고침을 수행 할 때 닦아 냈습니다. 로컬 저장소를 사용하는 것은 옵션이 아닙니다.

.state('edit', { 
     url: '/editItem/:id?userId', 
     templateUrl: 'app/items/edit.html', 
     controller: 'editController', 
     controllerAs: 'vm', 
     params: { 
      id: "", 
      userId: "", 
      userObject: null, 
     } 
}) 

정말 리로드 할 때 개체를 유지해야합니다. 나는 당신이 당신의 국가 매번에서의 URL PARAMS를 사용하려면

+1

로컬 스토리지 또는 쿠키 물마루? –

+0

'객체 '란 무엇입니까? 매번 널 (null)로 설정하는 것 같습니다. – nikjohn

+0

@GustavoGabriel 이것이 상태 정의에서 매개 변수를 정의하는 방법입니다. – Lex

답변

-1

, 당신은 resolve 기능을 사용할 수 있습니다-beta.2 1.0.0 UI 라우터를 사용하고 있습니다 : 이제

.state('edit', { 
     url: '/editItem/:id/:userId', 
     templateUrl: 'app/items/edit.html', 
     controller: 'editController', 
     controllerAs: 'vm', 
     resolve: { 
      testObject: function($stateParams) { 
      return { 
       id: $stateParams.id, 
       userId: $stateParams.userId 
      } 
      } 
     } 

    }) 

을, 당신은 통과 할 수 이 경로가 해결 당신의 editController 모든 시간 종속성으로 당신이 다음 한 상태에서 개체를 전달하려면 testObject, 값은 testObject.id

testObject.userId 같은 컨트롤러 내에서 사용할 수 프로그래밍 방식 $state.go를 사용

$state.go('myState', {myParam: {some: 'thing'}}) 

$stateProvider.state('myState', { 
       url: '/myState', 
       params: {myParam: null}, ... 

유일한 다른 옵션은 캐시에, 당신은이 널 (null)로 싶지 않는 경우에 당신은 왜 널 (null)로 객체를 설정하는

+0

이것이 어떻게 문제를 해결하는지 모르겠다. 원래 질문에서는 두 개의 URL 문자열이 괜찮다고 말했습니다. 즉 페이지를 새로 고침해도 계속 유지됩니다. 내 문제는 하나의 상태에서 다른 상태로 ui-sref를 사용하여 전달하려는 비 URL 객체 (현재 userObject라고 함)입니다. 이 작동합니다. 그러나 페이지 새로 고침으로 인해 userObject는 지워지고 두 개의 URL 문자열 (id 및 userId)은 지워지지 않습니다. 내 질문은 페이지를 새로 고침 할 때 userObject를 유지하는 방법입니다. –

+0

원래 질문에서 분명하지 않았습니다. 명확히 해 주셔서 감사합니다. 나는 나의 대답을 업데이트했다. – nikjohn

관련 문제