죄송하지만 ng include에서 헤더 부분을 가져오는 페이지를 만들었습니다(그 안에 로그인 버튼을 표시할지 여부를 결정하는 logincontroller가 있습니다). 동시에 ngroute에 로그인 페이지를 정의했습니다. 또한 logincontroller를 사용합니다. 데이터를 가져온 후 다시 범위를 호출했지만 동일한 컨트롤러에 두 개의 범위가 있는 것 같습니다. (nginclude가 완료되면 logincontroller에 있는 것들이 한 번 실행되고 로그인 페이지에 들어갈 때 다시 트리거되는 것을 발견했습니다)
온라인에서 언급한 대로 $apply()도 시도했는데 결과는 오류입니다
으아악위는 timeout에 consolelog가 포함된 컨트롤러의 코드입니다. 출력하면 3곳에서 동일한 ngcontroller를 사용하기 때문일까요? timeout의 $scope.user={islogged:1} 주석 호출은 다음과 같이 인쇄됩니다. 이는 내 작업에 비정상입니다. 으아악
$scope.user={islogged:1}의 주석을 해제하고 실행하면 세 개의 컨트롤러가 정상적으로 인쇄됩니다.으아악
================
방금 다시 테스트해보니 현재 트리거된 ngcontroller 아래의 값만 수정됩니다. ngcontroller가 여러 개인 경우 nginclude 또는 ngview 아래에 있든 다른 ngcontroller의 값은 변경되지 않습니다. 동일한 ngcontroller로 수정된 데이터를 다른 위치로 동기화하는 방법은 무엇입니까?
확실히 같은 범위인가요?
ng-include
새로운 범위가 생성됩니다.코드를 읽은 후
각 컨트롤러는 별도의 인스턴스이며 서로 영향을 미치지 않는다는 것은 사실입니다. 데이터 상태를 글로벌(상위 수준) 범위에 두는 것을 고려할 수 있습니다. 서비스를 통해 균일하게 관리하는 것이 더 좋습니다.
예:으아아아
$scope.$apply()가 작동하지 않나요?
한 곳이 다른 곳의 하위 범위가 아닌 두 곳에서 보이는 것이
$scope
동일한 범위인지 확인하는 것이 가장 좋습니다.코드를 올려주시면 더 좋을 것 같아요~
저도 같은 문제에 직면했습니다. $scope가 처음 변경되었을 때 인터페이스의 데이터가 이동하지 않았습니다. 그러나 인터페이스가 변경되면(예: 페이드 아웃되기 시작했을 때) 데이터가 즉시 변경되었습니다. 그러면 $scope가 다시 변경되고 이에 따라 인터페이스가 변경됩니다.
$apply를 사용해 보았지만 이미 사용 중인 항목이 있다는 등의 긴 오류 목록이 보고됩니다. 이해가 안 됩니다... 해결 방법이 있었으면 좋겠습니다.