2014-06-17 4 views
0

종속성을 포함해야하는 모든 응용 프로그램에서이를 사용하기 위해 dropzone js 지시문을 만들었습니다.
해당 지시문을 사용하는 동안 참조로 변수를 전달할 수 없습니다.
무엇이 문제 일 수 있습니까? 종속성이있는 다른 앱에 가치를 전달할 수 없습니까?의존성을 사용하여 참조에 대한 참조를 전달했습니다.

<my-image-widget my-selection="1" my-config="dropzoneConfig" my-name="trialname"></my-image-widget> 

JS :

나던 작업을 HTML 지시자 변수 이름 설정을 전달

(function() { 
    var app; 

    app = angular.module('myWidget', ["ngCookies"]); 

    app.directive("myImageWidget", ['$cookies','$http', function($cookies,$http) { 
     return { 
      restrict : "E", 
      scope:{ 
       mySelection:"@", 
       myName:'=', 
       myConfig:'=', 
      }, 
      template: "<form class='dropzone test' action='{{apiCall}}' id='{{mySelection}}'> {{myName}}</form>", 
      controller : function($scope, $element, $attrs) { 
       console.log($attrs.myConfig+' ----name is -----'+$attrs.myName); 

       //var config; 

       var config = $attrs.myConfig; 
       console.log('Option is ---------->'+config.option); 

       //var config=$scope.dropzoneConfig; 

       var myDropzone = new Dropzone($element[0], config.options); 
       myDropzone.autoDiscover = false; 
       //Write function if you need to add some event after files added 
       myDropzone.on("sending", function(file, xhr, formData) { 
        xhr.setRequestHeader('X-CSRFToken', $cookies.csrftoken); 
       }); 

       myDropzone.on("addedfile", function(file) { 
        var _this=this; 

        /* Maybe display some more file information on your page */ 
        var removeButton = Dropzone.createElement("<button data-dz-remove>*Remove file</button>"); 
        removeButton.addEventListener("click", function(e) { 
         e.preventDefault(); 
         e.stopPropagation(); 
         var server_file = $(file.previewTemplate).children('.server_file').text(); 
         alert('server-file ----------->>'+server_file); 
         // Do a post request and pass this path and use server-side language to delete the file 
         //   $.post(server_file,{'X-CSRFToken': $cookies.csrftoken}, 'json'); 
         $http({method: 'POSt', url: server_file, headers: {'X-CSRFToken': $cookies.csrftoken}}); 
         _this.removeFile(file); 
        }); 
        file.previewElement.appendChild(removeButton); 
       }); 

       myDropzone.on("success", function(file, response) { 
        console.log('&&&&&&&&&&&&&&&&&&&&&&After Adding response is ---------->'+response); 
        obj = JSON.parse(response); 
        console.log('*********************thumbnail created for ---------->'+obj.delete_url); 
        var removeLinkUrl = Dropzone.createElement('<span class="server_file">'+obj.delete_url+'</span>'); 
        file.previewElement.appendChild(removeLinkUrl); 
        myDropzone.emit("thumbnail", file,'https://www.google.co.in/logos/doodles/2014/world-cup-2014-12-5204175918989312-res.png'); 
        debugger; 
        // console.log('success'); 
       }); 

       myDropzone.on("removedfile", function(file) { 
        console.log('Removed file ---------->'+file.name); 
        /* Maybe display some more file information on your page */ 
       }); 

       _.each(config.eventHandlers, function (handler, event) { 
        console.log('loop'); 
        myDropzone.on(event, handler); 
       }); 
      }, 
      replace : true, 
      transclude : true, 
      link : function(scope, element, attrs) {}, 
     }; 
    }]); 
}).call(this); 
+2

정확한 방법으로 문제를 설명하십시오. 질문을 편집하여 나던 내용을 분명히하십시오. – mpm

+0

@mpm 지시어에 변수 이름 설정을 전달하지 않습니다 .. – anam

+0

doesn'twork .... show youre console.log ?? – BastienSander

답변

0

내가 $attrs.myConfig를 사용하여 변수에 액세스하려고했습니다 대신 내가 $scope.attrs을 시도하고 그것은 내 문제를 해결 ..