2013-07-25 4 views
5

이 컨트롤을 사용하고 있습니다 : http://blueimp.github.io/jQuery-File-Upload/angularjs.html 파일을 내 서버에 업로드하면 각도로 파일을 업로드 할 수 있습니다. URL을 반환하고 클라이언트에게 성공 콜백. 사용되는 플러그인은 일반적인 jquery 파일 업로드 일 뿐이지 만 사용하고있는 각도 지시어 래퍼가 있습니다.

$scope.options = { 
    url: '/api/Client/', 
    type: 'PUT', 
    done: function (event, data) { 
     var scope = angular.element(this).scope(); 
     scope.test = "doesn't work"; 
     scope.$apply(function() { 
      scope.test = "this doesn't work either"; 
     }); 
    } 
}; 

파일이 잘 업로드 및 done 함수가 호출 그러나 내가보기를 업데이트 할 수없는입니다 : 여기

내가 콜백을 정의하는 방법입니다. 처음에 범위를 변경하여 시도한 다음 $ apply() 함수가 필요하다는 것을 알았지 만 이는 작동하지 않습니다.

또한

$scope.options = { 
    url: '/api/Client/', 
    type: 'PUT', 
    done: function (event, data) { 
     $scope.test = "doesn't work"; 
     $scope.$apply(function() { 
      $scope.test = "this doesn't work either"; 
     }); 
    } 
}; 

을 시도하고도 작동하지 않습니다. 왜 내 견해를 업데이트하지 않는 지 잘 모르겠다. 완료된 호출은 Ajax 성공 이벤트이므로이 특정 플러그인이 $ scope에 어떤 문제를 일으킬 수 있는지는 알지 못한다. $ apply. 저는 AngularJs 1.1.5를 사용하고 있지만, 1.0.7을 시도해 보았습니다. 같은 문제가 발생했습니다. 내 댓글에서 복사

+0

apply를 호출하면 적용/요약이 이미 진행 중이라는 오류가 표시됩니까? –

+0

아니요, 오류가 없습니다. 단지 아무 것도하지 않습니다. 여러 번 호출하고 $ scope.test의 값을 보면 이전에 설정된 값이 표시됩니다. 보기가 그 값으로 업데이트되지 않습니다. –

+0

완료된 함수가 호출되면 두 번째 버전이 실제로 저와 같이 작동합니다. –

답변

11

문제가 무엇인지는 명확하게하기 :

내가 문제를 알아낼 수 있었다. 그들의 예제를 사용할 때 ng-controller (다른 컨트롤러 내에서 예제가 중첩되어 있음)의 복제본을 가지고 있었고 두 컨트롤러 모두 동일한 컨트롤러를 사용하고 있었지만 중첩 된 컨트롤러 범위 내에 있던 것만 업데이트하는 것처럼 보였습니다. duplicate ng-controller 속성을 제거하면 모든 것이 잘 동작합니다.

+0

정확히 같은 문제가있었습니다. 흥미롭게도 루트 요소의 바인딩 (ng-controller 태그의 첫 번째 항목)은 업데이트되지 않았습니다. – Joon

+0

당신은 최고입니다! 나는 같은 문제를 겪고 있었고 컨트롤러 중복 제거는 모든 것을 분류했다. – devTimmy

1

나는이 문제를 하루 종일 처리 했으므로 나는 또한 안으로 차임 할 것이라고 생각했다.

HTML에서 ng 컨트롤러를 ul 요소가 아닌 div 래퍼에 적용해야합니다.

관련 문제