2014-11-14 5 views
0

$ rootScope 변수 중 하나를 감시하고 싶습니다.

그것은 작동하고 내가 명시 적으로 감시자 등록 할 때 를 업데이트

$rootScope.$watch('foo', function(newVal) { 
    $scope.bar = newVal; 
}); 

을하지만 난 그냥 $ rootScope의 foo는을 할당 할 때 업데이트되지 않습니다. 이 식에 대해 암시 적으로 감시자를 지정하면 안됩니까? 그런데

$scope.bar = $rootScope.foo; 

, foo는는 처음에 빈 개체이며, 그것은 { '시험': '뭔가'} 에 업데이트됩니다 이상.

UPDATE

그것은이 표현은 감시자를 지정하고 자동으로 업데이트되지 않습니다 지금은 분명하다. 그래서 컨트롤러에 시계 기능이 없으면 bar을 업데이트 할 수있는 방법이 있습니까?

이 용도로 사용할 수 있습니까? 내 생각에 은 다음과 같이 할 수 있습니다.

$scope.list = Restangular.all('accounts').getList().$object; 
+1

아니요. 그냥 임무 야. –

+0

예, 이것은 바보 같은 질문이었습니다 :) 나는 내 질문을 업데이트했습니다. – halilb

답변

3

아니오 javascript가 작동하지 않기 때문입니다. 당신이 각이 외부처럼 뭔가를 시도하는 경우, 당신은 아무것도 업데이트하지 않을 것이다 볼 것이다 : 그들은 참조하기 때문에

var temp = 4; 
var temp2 = temp; 

temp = 5; 
console.log(temp2); //outputs 4 

(예 : 개체와 같은)은 다른 것들에 대한 작동합니까 이유입니다. 이 예는 작동합니다 : 코드의 나머지 부분을 보지 않고

var temp = { value: 4 }; 
var temp2 = temp; 

temp.value = 5; 
console.log(temp2); //outputs { value: 5 } 

편집

과 의견을 기반으로, 나는 당신이 당신의 참조를 파괴 가정거야. 위의 예가 효과가 있지만이 것은 적용되지 않습니다.

var temp = { value: 4 }; 
var temp2 = temp; 

temp = { value: 5 }; 
console.log(temp2); //outputs { value: 4 } 
+0

Mathew에게 감사 드린다. 그러나 나의 foo는 실제로 물건이었다. 초기 값은 {}이고, 갱신 된 값은 { 'label': 'test'}입니다. 나는 어쨌든 내 질문을 업데이 트했습니다. – halilb

관련 문제