2014-01-28 3 views

답변

2

당신이 컨트롤러가 구성 요소에서의 변화에 ​​대해 통지 할 것을 말하는 것은 정말 생각하는 올바른 방법이 아니다 무슨 일 이니?

컨트롤러에서 컨트롤러의 현재 $ 범위를 사용하여 일부 유형의 데이터 모델이 표시되고 뷰에 투영됩니다. DOM 요소 (사용자의 용어에서 추측 한 구성 요소)가 컨트롤러가 제공하는 모델을 업데이트하려는 경우 해당 모델은 지시문 (일반적으로 NG 모델)을 통해 구성 요소에 바인딩됩니다. 해당 구성 요소가 모델을 변경하면 지시문과 데이터 바인딩으로 인해 데이터가 자동으로 업데이트됩니다.

+0

수정 - 다음 단계는 컨트롤러가 모델이 업데이트되었음을 ​​알리는 것입니다. 그렇게하는 표준 방법은 무엇입니까? – schellsan

+1

스코프 값을 변경하여 다른 액션을 트리거하려는 경우 해당 값을 감시하면 @marfarma와 같은 새롭고 오래된 값으로 콜백이 시작됩니다. – BoxerBucks

+0

다각형 시계에 대한 다트 문서 : http://ci.angularjs.org/view/Dart/job/angular.dart-master/javadoc/angular.core/Scope.html#$watch – schellsan

2

이 또한 관심의 docs

//$scope.$watch(<function/expression>, <handler>); 

$scope.$watch('foo', function(newVal, oldVal) { 
    console.log(newVal, oldVal); 
}); 

참조 :

$scope.$on() 
$scope.$emit() 
$scope.$broadcase() 
$scopt.$watchCollection() 
+0

Dart의 각도가 동일합니까? – schellsan

+1

매우 유사합니다. AngularDart가 컨트롤러의 setter를 사용하여 값을 변경하면 범위를 활용하는 것이 종종 도움이되지 않습니다. 그러나 나열한 것들을 사용할 수 있습니다. –

+0

@ GünterZöchbauer, StreamController를 사용하여 구성 요소에서 컨트롤러로 업데이트를 푸시하는 중 문제를 해결하는 동안 문제가 발생했습니다. 인스턴스 생성시 스트림이 등록되었지만 이벤트 (업데이트) 당시에 스트림에 구독자가 없었지만 내 코드에서 구독을 제거하지 않았습니다. 나는 그것이 모호한 마술이라고 생각했다. 그것에 대한 통찰력이 있습니까? – schellsan

관련 문제