2016-02-12 6 views
0

Здесь у меня возникает одна проблема при загрузке нескольких изображений на AngularJS. Вот мой код и ошибка, которую я получаю.Ошибка загрузки нескольких изображений в angularjs

$scope.saveFile = function(file) { 
    return Upload.upload({ 
    url: CONFIG.apiUrl + '/fileupload', 
    data: { 
     fileUpload: file 
    } 
    }).success(function(data) { 
    console.log("RSPPPPPPP", data.file._id); 
    $scope.photoId = data.file._id; 
    console.log("sdvfbghjm,kjhgfdsa", $scope.photoId); 
    }) 
    return $scope.saveFile; 
    //}  
}; 

$scope.Addprojects = function(prodetails) { 
    if (prodetails.image1_id) { 
    $scope.prodetails.file.push(prodetails.image1_id); 
    //console.log("image1", prodetails.file); 
    } 
    if (prodetails.image2_id) { 
    $scope.prodetails.file.push(prodetails.image2_id); 
    //console.log("image2", prodetails.file); 
    } 
    //console.log(prodetails.file.length); 
    if (prodetails.file.length == 2) { 
    alert(prodetails.file.length); 
    $scope.saveFile(prodetails.file[0]).then(function(res) { 
     console.log("poooototot", res); 
     $scope.saveFile(prodetails.file[1]).then(function(res) { 
     $scope.Addprojectsimg(prodetails); 
     console.log("", Addprojectsimg); 
     alert('hai'); 
     }); 
    }); 
    } else if (prodetails.file.length == 1) { 
    $scope.saveFile(prodetails.file[0]).then(function(res) { 
     alert("ok"); 
     $scope.Addprojectsimg(prodetails); 
    }); 
    } else { 
    $scope.Addprojectsimg(prodetails); 
    } 
}; 

$scope.Addprojectsimg = function(prodetails){ 

         console.log("projectadding",prodetails,$scope.photoId); 
         prodetails.image1_id= $scope.photoId; 
         console.log("SUB",prodetails); 
         $http.post(CONFIG.apiUrl+"/projectsubmit", prodetails).success(function(data, status) { 
         console.log("prorespons",data); 
         alert("images uploaded sucessfully"); 

         }) 

       }; 

Ошибка

Error: $scope.saveFile(...).then is not a function addprojectctrl/[email protected]http://192.168.3.40:8081/2016/ANGULAR2016/ang-social/js/controllers.js:208:7 anonymous/[email protected]http://192.168.3.40:8081/2016/ANGULAR2016/ang-social/bower_components/angular/angular.js line 13365 > Function:2:332 ngEventHandler/http://192.168.3.40:8081/2016/ANGULAR2016/ang-social/bower_components/angular/angular.js:23613:17 $RootScopeProvider/this.$gethttp://192.168.3.40:8081/2016/ANGULAR2016/ang-social/bower_components/angular/angular.js:16052:16 $RootScopeProvider/this.$gethttp://192.168.3.40:8081/2016/ANGULAR2016/ang-social/bower_components/angular/angular.js:16152:20 ngEventHandler/<@http://192.168.3.40:8081/2016/ANGULAR2016/ang-social/bower_components/angular/angular.js:23618:17 [email protected]http://192.168.3.40:8081/2016/ANGULAR2016/ang-social/bower_components/jquery/dist/jquery.min.js:3:7467 n.event.add/[email protected]http://192.168.3.40:8081/2016/ANGULAR2016/ang-social/bower_components/jquery/dist/jquery.min.js:3:5583 return logFn.apply(console, args);

Пожалуйста, руководство меня, чтобы исправить эту проблему. Я думаю, что это небольшая ошибка, но я новичок в AngularJS.

ответ

3

Ваша $scope.saveFile функция не возвращает обещание, это должно быть так:

$scope.saveFile = function(file) { 
    return Upload.upload({ 
     url: CONFIG.apiUrl+'/fileupload', 
     data: {fileUpload: file} 
    }).success(function(data){ 
     console.log("RSPPPPPPP",data.file._id); 
     $scope.photoId = data.file._id; 
     console.log("sdvfbghjm,kjhgfdsa",$scope.photoId); 

    }); 
}; 
+0

В AngularJS есть эта разница между обещаниями '$ q' и' $ http', который использует другой интерфейс. Больше информации здесь: http://www.peterbe.com/plog/promises-with-$http – jjmontes

+0

благодаря @MartijnWelker, ваша мысль была обрядом. –

Смежные вопросы