구성 요소에서 일부 정보를 가져와야하는 컨트롤러가 있습니다. 각각은 돔을 통해 각도로 만들어집니다. 나는 그 구성 요소가 컨트롤러에 의해 제공 될 수있는 모델을 업데이트한다는 것을 이해한다. 구성 요소의 변경 사항을 컨트롤러에 알리는 각도 방법은 무엇입니까?AngularDart의 NgController와 NgComponent간에 메시지를 보내는 표준 방법은 무엇입니까?
답변
당신이 컨트롤러가 구성 요소에서의 변화에 대해 통지 할 것을 말하는 것은 정말 생각하는 올바른 방법이 아니다 무슨 일 이니?
컨트롤러에서 컨트롤러의 현재 $ 범위를 사용하여 일부 유형의 데이터 모델이 표시되고 뷰에 투영됩니다. DOM 요소 (사용자의 용어에서 추측 한 구성 요소)가 컨트롤러가 제공하는 모델을 업데이트하려는 경우 해당 모델은 지시문 (일반적으로 NG 모델)을 통해 구성 요소에 바인딩됩니다. 해당 구성 요소가 모델을 변경하면 지시문과 데이터 바인딩으로 인해 데이터가 자동으로 업데이트됩니다.
이 또한 관심의 docs
//$scope.$watch(<function/expression>, <handler>);
$scope.$watch('foo', function(newVal, oldVal) {
console.log(newVal, oldVal);
});
참조 :
$scope.$on()
$scope.$emit()
$scope.$broadcase()
$scopt.$watchCollection()
Dart의 각도가 동일합니까? – schellsan
매우 유사합니다. AngularDart가 컨트롤러의 setter를 사용하여 값을 변경하면 범위를 활용하는 것이 종종 도움이되지 않습니다. 그러나 나열한 것들을 사용할 수 있습니다. –
@ GünterZöchbauer, StreamController를 사용하여 구성 요소에서 컨트롤러로 업데이트를 푸시하는 중 문제를 해결하는 동안 문제가 발생했습니다. 인스턴스 생성시 스트림이 등록되었지만 이벤트 (업데이트) 당시에 스트림에 구독자가 없었지만 내 코드에서 구독을 제거하지 않았습니다. 나는 그것이 모호한 마술이라고 생각했다. 그것에 대한 통찰력이 있습니까? – schellsan
수정 - 다음 단계는 컨트롤러가 모델이 업데이트되었음을 알리는 것입니다. 그렇게하는 표준 방법은 무엇입니까? – schellsan
스코프 값을 변경하여 다른 액션을 트리거하려는 경우 해당 값을 감시하면 @marfarma와 같은 새롭고 오래된 값으로 콜백이 시작됩니다. – BoxerBucks
다각형 시계에 대한 다트 문서 : http://ci.angularjs.org/view/Dart/job/angular.dart-master/javadoc/angular.core/Scope.html#$watch – schellsan