2015-01-13 2 views
0

현재 활성화 된 컨트롤러를 다시 초기화하는 방법이 있습니까?각도 활성 컨트롤러 다시 초기화

이렇게하면 많은 추가 해결 코드를 추가하지 않고도 페이지간에 전환하는 데 도움이됩니다.

<div ng-controller='Blah as ex'> 
    {{ex.name}} 
</div> 

및 컨트롤러 어쩌구의 초기화 함수에서

, 이름이 서비스에서 검색 할 것입니다 : 예를 들어

위의 예를 들어, 그래서

this.name = someService.name; 

, 내가 갖고 싶은 것 내 Blah 컨트롤러를 다시 초기화하는 버튼.

편집 : 이것은 단지 기본적인 예입니다.

내 컨트롤러에서 '뒤로'및 '전달'데이터를 복원하기 위해 브라우저의 '상태'를 사용하고 있습니다.

가 나는 그것의 과정을 단순화하기 위해 노력하고있어 수 있도록 몇 가지 경우입니다 (현재 작동하지만, '꽤'로하지 않습니다)

+0

왜 버튼을 다시 서비스에 호출하지 않습니까? $ 범위 값을 새로 고칩니다. 전체 컨트롤러를 새로 고침하는 것이 업데이트하려는 개별 항목을 다시로드하는 것보다 훨씬 느립니다. –

+0

이것은 매우 기본적인 예입니다. 내 응용 프로그램을 한 페이지에서 다른 페이지로 전환하고 컨트롤러를 다시로드해야합니다. – PenguinSource

+0

명확하게하기 위해 서로 다른보기로 라우팅하고 연결된보기로 연결될 때마다 각보기의 컨트롤러를 새로 고치시겠습니까? –

답변

0
이 같은

겠습니까 뭔가가 가능한 해결책이 될? route.reload를 사용하여 페이지를 다시로드 하시겠습니까?

myapp.Controller('SampleController', function($location, $route) { 

    $scope.navTo = function(url) { 
    if ($location.path() === url) { 
     $route.reload(); 
    } else { 
     $location.path(url); 
    } 
    } 

}); 
+0

이 작업은 가능하지만 두 가지 주요 문제가 있습니다. 먼저 컨트롤러뿐만 아니라 전체 HTML 헤더를 모두 다시로드합니다. 이렇게하면 훨씬 비효율적이게됩니다. 두 번째 문제는 SPA의 경로가 올바른 위치에 다시로드되지 않을 수 있다는 것입니다. 물론, 이것은 부작용입니다. – PenguinSource

+0

내가 생각할 수있는 유일한 다른 점은 단순히 모든 값을 다시 기본 상태로 재설정하는 초기화 함수를 컨트롤러에 추가한다는 것입니다. –

+0

다른 해결책으로 내 문제를 해결했습니다. 도와 주셔서 감사합니다. – PenguinSource