2014-09-03 76 views
0

這是我的場景。我有一個addPersonController和editPersonController分別與addPersonView和editPersonView。在兩個控制器中,我都在上傳Person的圖片。我的上傳功能使用範圍變量/函數來處理控制器內的文件上傳。因此,我最終在兩個不同的控制器中擁有相同的代碼。任何建議如何重用上傳功能?我使用的NG-流指令上傳在Angularjs中添加/編輯場景的設計建議

$scope.personImageUploaderConfig = { 
    target : '/personImageUpload', 
    singleFile:true, 
    chunkSize : $scope.maxChunkSize, 
    query: function (flowFile, flowChunk) { 
     // function will be called for every request 
     return { 
      personId: $scope.newPersonIdentifier, source: 'flow_query' 
     }; 
    } 
}; 

$scope.onUploadCompleted = function() { 
    //event triggers by ng-flow when upload completes 
}; 

//calls by controller logic supplying personId 
$scope.handleUpload = function(personId){  
    if($scope.personPicture){ 
     $scope.newPersonIdentifier = personId; 
     $scope.image.flow.upload();   
    } 
}; 
//event triggers by ng-flow when image selected 
$scope.imageSelected= function() { 

    else { 

     $scope.getBinrayFromFile($scope.image.flow.files[0].file).then(function (binary) { 
      $scope.personPicture = binary; 
     }); 
    } 
}; 

$scope.getBinrayFromFile=function(file){ 
    var deferred = $q.defer(); 
    var r = new FileReader(); 
    r.onloadend = function(e){ 
     var data = e.target.result; 
     deferred.resolve(data); 
    }; 
    r.readAsBinaryString(file); 
    return deferred.promise; 
}; 
+1

使用服務... – 2014-09-03 14:14:23

回答

0

您可以創建一個指令來處理,用scope: false使範圍的指令是相同的控制器的範圍。