나는 높거나 낮게 검색했고, 많은 '솔루션'을 시도했으며 서비스를 제대로보기 위해 각도를 얻을 수 없습니다.
서비스 :
이self = {}; // or self = this;
self.testVar = null;
$interval(function() {
self.testVar = Math.random();
}, 1000);
return self;
컨트롤러 :
$scope.testVar = myService.testVar;
$scope.$watch('testVar', function(newVal, oldVal) {
console.log(newVal, oldVal);
})
이 코드는 작동하지 않습니다. 각도가 서비스 업데이트를 마술처럼 다루기로되어있는 것처럼 $ broadcast 사용을 피하고 싶습니다. 모든 통찰력이 인정됩니다.
편집 : 컨트롤러 솔루션 : 사람이 행동을 설명하는 데 관심이있는 경우
$scope.$watch(
function() { return myService.testVar },
function(newVal) {
console.log(newVal);
}
)
, 그것은 같은 문제가 발생하는 혜택을 것입니다. 이 100ms로 $ 인터벌 타이머를 변경 추가 조사를
여전히 $ 범위. $ 시계 제안마다 1000MS 1 초의 최대 속도로 설정 콘솔 제어기 출력을 초래한다. 나는 당신이 서비스에서 $ scope.testVar을 설정 $ 브로드 캐스트 또는이 코드에서는 관찰자/콜백 메소드 대신 O_O
"서비스 값을보고 범위를 업데이트 할 때 예상대로 작동합니다." 그것은하지 않습니다. $ scope.watch ('myService.value', ...)와 같은 서비스 값을 직접 본다면 아무 일도 일어나지 않습니다 ... – user3516621
첫 번째 매개 변수로 문자열을 전달하면 해당 값이 범위의 속성이 될 것으로 기대합니다 . 서비스의 값을 사용하려면 함수를 첫 번째 매개 변수로 전달하고 서비스 호출의 값을 반환해야합니다. – aet