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