2013-07-15 2 views
0

기본적으로 angularFireCollection과 함께 $ watch를 사용하려고합니다. 그러나 내가 원하는 방식대로 작동하지 않는 것 같습니다. 내가 페이지를로드 할 때 데이터가 처음로드 될 때 콘솔에서 "새로운"기록하고 그 괜찮지 만하면 새로운 데이터, 그래서AngularJS로 AngularFireCollection의 변경 감지

$scope.bits = angularFireCollection(new Firebase(url).limit(75)); 

$scope.$watch('bits', function() { 

    console.log('new'); 

}); 

:

내가 지금 무엇을 가지고 들어 오면 아무 것도 기록하지 않습니다. 왜 이런 일이 일어나는가?

+2

대신'bits.length'를 보셨습니까? – robertklep

+0

@robertklep 그 덕분에 대단히 감사합니다. –

답변

0

$ watch는 객체 참조 만 봅니다 (===를 사용하여 비교합니다). 그래서 $ scope.bits는 내용이 변경 되었더라도 항상 동일한 배열 인스턴스이므로 청취자를 발생시키지 않습니다.

당신은 객체의 내용을 비교 할 수 있습니다 $ 시계에 추가 매개 변수를 전달할 수 있습니다 : 나는 @robertklep이 제안 bits.length를 사용하여 들어 본 적이 것

$scope.$watch('bits', function() {}, true); 

을, 그러나 그것은 또한 우아한 모습 그가 대답으로 올리면 나는 그것을 upvote 줄.

+0

그리고 추가 매개 변수를 전달하는 것이 훨씬 많은 CPU 사용량 (객체에 따라 다름)입니까? – bennlich

+0

@bennlich 일을 늦추려면 데이터의 실질적인 중첩이되어야하지만 그래, 기본적으로 켜져 있지 않은 이유가 있습니다! – Kato