2017-11-01 7 views
0

문제와 관련된 질문이 여러 개 있지만 문제를 해결하는 데 여전히 어려움이 있습니다.Angularjs : 개체 속성 값이 업데이트되지 않습니다.

<!doctype html> 
<html ng-app="Demo"> 
<head> 
    <meta charset="utf-8" /> 
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous">  
    </script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js">  
    </script> 

</head> 
<body ng-controller="AppController"> 

     <input type="" name="" ng-model="docs[1].value"> 
     {{m3.value}} 
     {{m4}} 

    <script type="text/javascript"> 
     var app = angular.module('Demo', []); 

     app.controller(
      "AppController", 
      function($scope) { 

       $scope.docs=[{value:"first doc"}, {value:"second doc"}];     

       $scope.m3=$scope.docs[1]; 
       $scope.m4=$scope.docs[1].value; 

      } 
     ); 


    </script> 

</body> 
</html> 

내가 입력에 입력 한 m3.value가 업데이트되는하지만 m4하지 않는 : 나는 다음과 같은 HTML과 자바 스크립트 코드가 있습니다! 왜 이런 일이 일어나는지 알 수 없습니다. 모든 의견을 부탁드립니다.

답변

0

좋아, 나는 그것이 m3.value에 감시자를 추가하는 것입니다 해결 방법 너무 :

$scope.$watch('m3.value', function(){ 
    console.log('Changing'); 
    $scope.m4 = $scope.m3.value; 
}); 

그리고 지금 $ scope.m4 업데이트됩니다.

+0

바인딩이 작동하는 경우 올바르지 않습니다. –

+0

이것이 나에게 효과가있는 유일한 방법입니다. 제안한 변경이 내가 원하는 것에 맞지 않습니다. 여기서 제공 한 코드는 원래 코드의 단순화 된 버전입니다. – user1512681

+0

모달이 업데이트 중이며 코드 사용에는 제안되지 않았 음을 보여주기 위해 변경되었습니다. –

4

문 1 :

$scope.m3=$scope.docs[1]; 

때문에, {{m3.value}} 업데이트 얻을 것이다 모델 값 모델 docs[1]에 대한 참조를 저장이 문.

문 2 :

$scope.m4=$scope.docs[1].value; 

실제 원시 값을 복사하는이 문.

때문에, {{m4}}는 여전히 이전 값을 얻을

+0

감사합니다. 그렇다면 컨트롤러의 워드 프로세서 [1] .value에 어떻게 바인딩해야합니까? – user1512681

+0

@ user1512681 컨트롤러에서 업데이트 된 값을 얻기 위해'$ scope.docs [1] .value' 또는'm3.value'를 사용할 수 있습니다 –

+0

(주제 해제) 여전히 양방향 바인딩입니까? 그것은 관찰자의 일부가 될 것인가? –