在Angularjs中添加/编辑场景的设计建议

问题描述:

这是我的场景。我有一个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

您可以创建一个指令来处理,用scope: false使范围的指令是相同的控制器的范围。