(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 />
`