2014-02-06 3 views
0

나는 다음과 같은 plunkr을 가지고있다 : here. 누구든지 trimName 지시문이 템플릿의 텍스트를 변경하지 않는 이유를 설명 할 수 있습니까? 콘솔에서 "트리밍"텍스트를 볼 수 있지만 반영되지는 않습니다. 나는 범위를 적용하려고하면 $apply already in progress이 표시되는 "각도 세계"에 있다고 생각합니다.이 범위 변수가 변경을 트리거하지 않는 이유는 무엇입니까?

+0

여기서하고있는 일을 감안할 때 "트림"필터를 사용할 수도 있습니다. http://jsfiddle.net/tUyyx/ –

+0

아, 아니요. 그것은 단지 예일뿐입니다. 나는 트림 기능을 정말로 원하지 않는다. 근본적인 문제가 무엇인지 알아 내려고했습니다. – Geo

답변

1

"경쟁 조건"과 같은 것으로 생각할 수 있습니다. $digest이 이미 진행 중이며 값이 AngularJS에 의해 무시됩니다.

간단한 해결 방법은 나중에 $evalAsync를 사용하여 문을 평가하는 것입니다 :

if(scope.trimName.length > intLimit) { 
    scope.$evalAsync(function() { 
    scope.trimName = scope.trimName.substring(0, intLimit) + "...trimmed"; 
    }); 
} 

Here is an example.

+1

이것은 굉장합니다! 나는 거의 2 시간 동안 내 머리를 벽에 치고 있었다 : D – Geo

+0

나는 너의 고통을 이해한다 ... 나는 몇 주 전에 비슷한 문제를 가지고 있었다. :) –

관련 문제