-
Notifications
You must be signed in to change notification settings - Fork 128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IE11에서 scope.$apply 실행시 오류 발생되어 $rootScope.$$phase 조건으로 판단하도록 수정 #34
Conversation
확인해 보겠습니다. |
@qpitlove 제가 확인해 보고자 하는 것은 현재 angular.js에서 이를 안티패턴으로 얘기하고 있어서 좀더 파봐야 할것도 갔고요. 참고하신 1.2.28의 소스 위치도 알려주시면 도움이 될듯합니다. |
@outsideris 그리고 본문에 추가한 샘플 코드의 위치는 angular.js 파일의 L17147 입니다.
ngModel에서 input에 대한 이벤트 처리와 관련된 listener 관련 코드 입니다. FF 34.0.5 angular-summernote.js 에 scope의 phase에서 확인했던 방식은 아래와 같이 console.log로 테스트를 해본 결과값이었습니다.
추측하기로는 |
보통 scope에 충돌날 경우에 대비해 $evalAsync도 사용하는걸 봤는데요.
|
@qpitlove 바로 디렉티브 rootScope에 접근하는게 맞는지 잘 모르겠어서...
를 파악해 보려고 합니다. 2번 부분을 생각하면 여기가 아니라 angular.js쪽의 문제가 아닌가 의심되기도 하는데 좀더 테스트해봐야 알 수 있을듯 합니다. angular.js의 버그가 아니라면 1번 부분을 파악해서 코드 주신대로 우회하는 방법을 사용하거나 아니면 |
네 감사합니다. 1.2.28에 비해 코드가 상당히 바뀌었는데요.
참고 부탁 드리겠습니다. |
IE 11에서 이슈를 재현해보려고 했는데 재현을 못해서 확인을 못하고 있습니다. http://jsfiddle.net/outsider/n8dt4/139/embedded/result%2Chtml%2Cjs%2Ccss/ 여기서 말씀하신 버전으로 맞추고 하단의 "code : HTML string in summernote" 부분의 예제가 위 예시에서 어떻게 재현할 수 있는지 확인 부탁드립니다. |
@outsideris 죄송합니다. 다른 작업때문에 답변이 많이 늦었습니다. |
보내주신 샘플에서 ng-model로 설정된 부분의 예제가 제 IE11에서도 정상동작되고 error 없음을 확인했습니다. 감사드립니다. |
네 업무도 있으신데 너무 급하게 확인하진 않으셔도 됩니다. ^^ |
@outsideris 답변 감사드립니다. |
안녕하세요. 답변이 많이 늦었습니다. 간단히 요약하자면
재미있는 부분은 jQuery의 $(...).append( editorWrapElement ) 이동시 summernote 에서 onChange에 대한 이벤트를 실행 시켜주는데 이때 angular-summnernote의 updateModel() 메소드가 실행된다는 점입니다. ( updateModel() 은 $scope.$apply 를 실행시켜 줍니다. ) 그리고 $scope.$watch내에 실행된 상태는 https://github.com/angular/angular.js/blob/master/src/ng/rootScope.js#L1271 참고 부탁 드리겠습니다. |
이슈 추적하느라고 고생이 많으셨겠네요. |
네 감사합니다. ^^ |
to avoid inprog error with outer scope <https://docs.angularjs.org/error/$rootScope/inprog?p0=$digest>
@outsideris 네 확인해 보고 다시 말씀드리겠습니다. |
@outsideris 정상적으로 동작확인되었고 |
fixed in v0.3.2 |
적용해서 버전 올렸습니다. 미처 고려하지 못한 이슈에 적극적으로 대응해 주셔서 감사합니다. |
@outsideris 감사드립니다. |
안녕하세요. outsider님
summernote angular version을 애용하고 있는 평범한 개발자 중 한사람입니다.
최근 IE에서 테스트를 하다 페이지 로딩 시 계속적인 angular exception이 나서 원인을 찾아 봤는데요.
Error: [$rootScope:inprog] $digest already in progress
angular의 dirty checking에서 $$phase 조건범위가 해당 scope이 아닌 $rootScope의 처리로 되어야 함을 angular 1.2.28 소스 코드를 통해 알게 되었습니다.
확인해 보시고 반영 부탁드리겠습니다.
ps. 많은 도움 받고 있습니다. ^^