2016-06-28 6 views
3

У меня есть эта функция, и бросить исключение:TypeError: Upload.upload не является функцией

$scope.uploadAvatar = function(avatar, user) { 
    Upload.upload({ 
     url: 'api/v1/user' + user.id + '/', 
     avatar: avatar, 
     method: 'put' 
    }) 
}; 

TypeError: Upload.upload is not a function

Мои скрипты включает в себя:

<script src="/static/js/main.js"></script> 
    <script src="/static/js/bootstrap.min.js"></script> 
    <script src="/static/js/posts_controller.js"></script> 
    <script src="/static/js/jquery.equalheights.min.js"></script> 
    <script src="/static/js/video.js/video.js"></script> 
    <script src="/static/js/swiper.jquery.min.js"></script> 
    <script src="/static/ng-file-upload/FileAPI.js"></script> 
    <script src="/static/ng-file-upload/ng-file-upload.js"></script> 
    <script src="/static/ng-file-upload/ng-file-upload-all.js"></script> 
    <script src="/static/ng-file-upload/ng-file-upload-shim.js"></script> 
    <script src="/static/ng-file-upload/ng-file-upload.js"></script> 

Так что я впрыснуть 'Загрузить' в моем контроллере и «ngFileUpload» в модуле Мой контроллер:

myApp.controller('ShowsListController', ['$scope', '$http', '$routeParams', '$location', '$route', 'Upload', function ($scope, $http, $routeParams, $route, Upload) { 

    $http.get('/api/v1/shows/').success(function (data) { 
     $scope.shows = data; 
    }); 


    $http.get('/check_login/').success(function (data) { 
     $scope.mediaurl = data.mediaUrl; 
     $scope.user = data; 

    }); 



    $http.get('/api/v1/actors/').success(function (data) { 
     $scope.actors = data; 
    }); 

    $http.get('/api/v1/users/').success(function (data) { 
     $scope.users = data; 
    }); 


    $scope.uploadAvatar = function (avatar, user) { 

     Upload.upload({ 
      url: 'api/v1/users' + user.id + '/', 
      avatar: avatar, 
      method: 'put' 
     }) 
    }; 

}]); 

Добавить мой контроллер с помощью этих функций

+0

Если есть функция Upload, у вас есть ваш код в $ (document) .on ("ready", function() {}); ? –

+0

Я поставил эту функцию загрузки в свой контроллер, и у меня нет $ (document) .ready (function {} –

+0

И вы инициализируете свой контроллер после того, как документ готов? –

ответ

3

В декларации вашего контроллера вы ввели $location после $routeParams, но вы забыли передать его в функции.

Поскольку вы используете аннотацию встроенного массива, вам необходимо сохранить массив аннотаций в соответствии с параметрами самого объявления функции.

myApp.controller('ShowsListController', ['$scope', '$http', '$routeParams', '$location', '$route', 'Upload', function ($scope, $http, $routeParams, $location, $route, Upload) { 
// your current code 
} 

См. docs для получения дополнительной информации.

+0

Спасибо большое :)) –

+0

Добро пожаловать. Рад, что это помогло. :) –