2016-08-09 4 views
0

나는 다음과 같은 초기 코드가 사용자에게가 아니라 특정 장소에서 팝업 후 업데이트됩니다 어떻게 든 변경되지 않고 이전 사용자 이름 holl을 인쇄합니다. 콘솔을 사용하여 디버깅하지만 콘솔이 업데이트 된 이름을 반환합니다. 나는 심지어 $ scope를 사용한다. 트윗 (콘솔은이 영역에서 업데이트 된 버전을 반환한다)을 보내기 전에 $ apply()를 사용하지만 사용하지는 않는다. 왜 $ scope.tweet가 동일하게 유지되는지 이해할 수 없습니다. 어떤 제안?스코프 변수는

답변

2

내 이해에 따라 변경된 기능은 $scope.user입니다. 그러나 $scope.tweet이 생성 될 때 user.Name의 값을 가져 와서 문자열로 변환하고 tweet.message에 할당하기 때문에이 메시지는 $scope.tweet의 메시지에서 $scope.user.Name으로 변경되지 않습니다. tweet.message는 자동으로 업데이트되지 않습니다.

그래서이 문제를 해결하려면 2 가지 옵션이 있습니다.

1) $ scope.user가 변경된 후 $ scope.user가 변경된 함수에서 $ scope.tweet에 다시 할당하십시오.

function X() { 
    $scope.user = {'Name':'Jamie'}; 
    $scope.tweet = {'message' : "Good job " + $scope.user.Name + "!! You have collected all there is..!"}; 
} 

또는

2

) $의 scope.user의 $ 시계를 넣고 시계 기능 내부 $의 scope.tweet을 지정합니다.

$scope.$watch('user', function(altered) { 
    $scope.tweet = {'message' : "Good job " + altered + "!! You have collected all there is..!"}; 
}); 
$scope.user = {'Name':'holl'};