(function (angular) {
    var app = angular.module('app');
    `<br /> function imgUploadController($scope, $window, Upload) { <br /> <br /> $scope.old_img = $scope.img; <br /> $scope.size = $scope.size || “20MB”; <br /> <br /> var folder = $window.location.pathname.split(‘/‘)[1]; <br /> <br /> // upload on file select or drop <br /> $scope.upload = function (file) { <br /> $scope.progress = 0; <br /> <br /> Upload.upload({ <br /> url: ‘/api/tophandler.ashx?method=utils.fileupload’, <br /> data: { <br /> file: file, <br /> folder: folder, <br /> } <br /> }).then(function (resp) { <br /> $scope.img = resp.data.result; <br /> if (!$scope.old_img) { <br /> $scope.old_img = $scope.img; <br /> } <br /> //增加如下语句 判断是否传递过来的success 是函数,如果是 则触发调用<br /> if (typeof $scope.success === ‘function’) { <br /> $scope.success({ img: $scope.img}); <br /> } <br /> }, function (resp) { <br /> console.log(‘Error status: ‘ + resp.status); <br /> }, function (evt) { <br /> var progressPercentage = parseInt(100.0 * evt.loaded / evt.total); <br /> $scope.progress = progressPercentage; <br /> }); <br /> }; <br /> <br /> $scope.cancel = function () { <br /> $scope.img = $scope.old_img; <br /> } <br /> <br /> $scope.clear = function (file) { <br /> $scope.file = null; <br /> } <br /> <br /> $scope.$watch(‘img’, function (newVal, oldVal) { <br /> if (newVal === oldVal) return; <br /> <br /> if (!newVal) { <br /> $scope.old_img = null; <br /> } <br /> }) <br /> } <br /> <br /> app.directive(‘imgUpload’, function () { <br /> return { <br /> restrict: ‘E’, <br /> scope: { <br /> img: ‘=?’, <br /> size: ‘@?’, <br /> success: ‘&?’, //增加此行,就添加了回调函数参数<br /> }, <br /> templateUrl: ‘/ajax/imgUpload.html’, <br /> replace: true, <br /> controller: [‘$scope’, ‘$window’, ‘Upload’, imgUploadController], <br /> link: function (scope, element, attrs) { <br /> <br /> }, <br /> }; <br /> }); <br /> <br />})(angular)`

    如上代码 是 在上传组件 中 增加了回调函数;

    html 代码中示例如下:
    <img-upload img="ATTPATH" success="success(img)"></img-upload> 其中 success=”success(img)” 设置了回调函数且接收传递回来的参数放在img中;

    回调函数的js代码,调用放在Ctrl中,代码如下
    <script>
    var app = angular.module('app', ['ngAnimate', 'ui.bootstrap', 'bt-table', 'ngFileUpload']);
    rsvid = $("#Hid_rsvid").val();
    app.controller('ctrl', function ($scope, TagSelectService) {
    $scope.tags = [];
    `<br /> $scope.selectedTags = []; <br /> $scope.getTags = function () { <br /> <br /> $scope.selectedTags = []; <br /> $.get(“/Rsv/ajax/TagsData.aspx”, { command: “GetRsvTags”, RSVID: rsvid }, <br /> function (data) { <br /> data = JSON.parse(data); <br /> if (data.taglist.length > 0) { <br /> var str = []; <br /> $.each(data.taglist, function (index, item) { <br /> $scope.selectedTags.push({ SEQ_ID: item.TAGID }); <br /> }); <br /> } <br /> $scope.showTagModal(); <br /> } <br /> ); <br /> }; <br /> <br /> $scope.showTagModal = function () { <br /> var tagids = $scope.selectedTags; <br /> <br /> var modalInstance = TagSelectService.showSysTagModal(tagids); <br /> <br /> modalInstance.result.then(function (selectedItems) { <br /> var tagids = [], tagnames = []; <br /> angular.forEach(selectedItems, function (tag) { <br /> tagids.push(tag.SEQ_ID); <br /> tagnames.push(tag.TAGNAME); <br /> }); <br /> <br /> $(‘#val_tag_ids’).val(tagids.join(‘,’)); <br /> $(‘#val_tag_texts’).val(tagnames.join(‘,’)); <br /> <br /> window.batchAdd(); <br /> }); <br /> }; <br /> //如下代码部分,就是接收到上传成功后的回调函数;处理自己的业务逻辑<br /> $scope.success = function (img) { <br /> <br /> $.post(“/Order/ajax/OrderData.aspx”, { command: “SaveRsvAtta”, RSVID: rsvid, ATTAPATH: img, }, <br /> function (data) { <br /> data = JSON.parse(data); <br /> if (data.resultCode == 1) { <br /> alert(“上传成功!”); <br /> debugger; <br /> GetRsvAtta(rsvid); <br /> } <br /> } <br /> ); <br /> } <br /> <br /> }); <br /> `