2014-09-12 8 views
1

spinningElement에서 ng-show를 작동시킬 수 없습니다. 나는 지시어에 대해 고립 된 범위를 가지고 있지만 내부의 요소가 있기 때문에 작동해야한다고 생각하니?ng-show가 지시어에서 작동하지 않습니다.

누구나 내가 잘못하고있는 것에 대한 아이디어가 있습니까?

코드 스 니펫 :

angular.module('lr.upload.directives').directive('uploadButton', [ 
    'upload', 
    function(upload) { 
     return { 
      restrict: 'EA', 
      scope: { 
       data: '=?data', 
       url: '@', 
       param: '@', 
       method: '@', 
       onUpload: '&', 
       onSuccess: '&', 
       onUploadTest: '&', 
       onError: '&', 
       onComplete: '&' 
      }, 
      link: function(scope, element, attr) { 
       scope.uploading=false; 
       var el = angular.element(element); 
       var fileInput = angular.element('<input type="file" />'); 
       var spinningElement = angular.element('<img ng-show="uploading" class="uploadSpinner" src="../../img/loading.gif" />'); 
       el.append(fileInput); 
       el.append(spinningElement); 

솔루션 : 당신이 그것을 작동하게하기위한 컴파일 $ 사용한다고 생각

angular.module('lr.upload.directives').directive('uploadButton', [ 
    'upload', '$compile', 
    function(upload, $compile) { 
     return { 
      restrict: 'EA', 
      scope: { 
       data: '=?data', 
       url: '@', 
       param: '@', 
       method: '@', 
       onUpload: '&', 
       onSuccess: '&', 
       onUploadTest: '&', 
       onError: '&', 
       onComplete: '&' 
      }, 
      link: function(scope, element, attr) { 
       scope.uploading = false; 
       var el = angular.element(element); 
       var fileInput = angular.element('<input type="file" />'); 
       var spinningElement = $compile('<img ng-show="uploading" class="uploadSpinner" src="../../img/loading.gif" />')(scope); 
       el.append(fileInput); 
       el.append(spinningElement); 
+1

왜 템플릿을 사용하지 않거나 마크 업을위한 templateUrl? – Whisher

+0

템플릿이나 템플릿 URL을 사용하는 것이 올바른 접근 방식이어야한다고 동의 하겠지만, 개발자는이 방법을 사용하여 코드를 조금만 확장하려고합니다. 따라서 코드를 다시 형식화하지 않으려 고합니다. 다른 감사합니다 :) –

답변

1

var spinningElement = $compile('<img ng-show="uploading" class="uploadSpinner" 
src="../../img/loading.gif" />')(scope); 
+0

감사합니다, 다른 사람을 위해, 의존성 목록에 $ compile을 추가하는 것을 기억하십시오 :) –