2016-10-20 3 views
1

Я пытаюсь интегрировать Filestack в существующее приложение. Я думаю, что у меня возникают проблемы с настройкой этих модулей, но я не могу правильно настроить порядок. Я получаю эту ошибку:Ошибка углового инжектора с Filestack

angular.js:38Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.5.6/$injector/modulerr?p0=myApp&p1=TypeError%…ogleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.5.6%2Fangular.min.js%3A20%3A156) 

Вот файл маршрутизации:

(function() { 

    var app = angular.module('myApp', ['ngRoute', 'angular-filepicker']); 

    // ROUTING 
    app.config(['$routeProvider', function($routeProvider, filepickerProvider){ 

     $routeProvider 
      .when('/home', { 
       templateUrl: "views/home.html", 
       controller: "HomeController" 
      }) 
      .when('/shopping-list/:id', { 
       templateUrl: "views/shopping-list.html", 
       controller: 'ShoppingListController' 
      }) 
      .when('/add-list', { 
       templateUrl: "views/add-list.html", 
       controller: 'AddListController' 
      }) 
      .otherwise({ 
       redirectTo: '/home' 
      }); 
      filepickerProvider.setKey('XXXXXXX'); 
    }]); 

Here is the index.html: 





    <!DOCTYPE html> 
    <html ng-app="myApp"> 
    <head> 
     <!-- CDN SCRIPTS --> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/randomcolor/0.4.4/randomColor.min.js"></script> 

     <!-- Font Awesome --> 
     <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous"> 

     <!-- Bootstrap --> 
     <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 

     <!-- Tara's Custom CSS --> 
     <link rel="stylesheet" type="text/css" href="css/style.css"> 

     <!-- Imported Google Fonts --> 
     <link href="https://fonts.googleapis.com/css?family=Rubik" rel="stylesheet"> 



     <title>Shopping List</title> 

    </head> 

    <body> 

     <div ng-include="'partials/header.html'"></div> 

     <main ng-view></main> 

     <!--ANGULAR SCRIPTS--> 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular-route.min.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular-animate.min.js"></script> 
     <script src="/bower_components/filepicker-js/filepicker.js"></script> 
     <script src="/bower_components/angular-filepicker/dist/angular_filepicker.js"></script> 
     <script type="text/javascript" src="//api.filestackapi.com/filestack.js"></script> 
     <script type="text/javascript" src="js/index.js"></script> 
     <script type="text/javascript" src="js/controllers/controller-header.js"></script> 
     <script type="text/javascript" src="js/controllers/controller-home.js"></script> 
     <script type="text/javascript" src="js/controllers/controller-add-list.js"></script> 
     <script type="text/javascript" src="js/controllers/controller-shopping-list.js"></script> 

    </body> 

    </html> 

And the controller that is using Filestack: 

     (function() { 
     'use strict'; 

     var app = angular.module('myApp'); 

     app.controller('ShoppingListController', ['$scope', '$http', '$routeParams', 'API_BASE', '$location', function($scope, $http, filepickerService, $routeParams, API_BASE, $location){ 


      // GET SPECIFIC LIST 
      $scope.list = []; 
      var id = $routeParams.id; 

      $http({ 
       method: 'GET', 
       url: API_BASE + 'shopping-lists/' + id 
      }).then(function successCallback(response) { 
       $scope.list = response.data[0]; 
      }, function errorCallback(response) { 
       console.log('it did not work'); 
       console.log(response.statusText); 
      }); 


      // REMOVE LIST 
      $scope.removeList = function(){ 
       var id = $scope.list.id; 
       console.log(id); 
       $http.delete(API_BASE + 'shopping-lists/' + id) 
        .success(function (data, status, headers, config) { 
         console.log('you deleted :' + $scope.list); 
        }) 
        .error(function (data, status, header, config) { 
        }); 
       $location.path('/home');  
      }; 

      // RANDOM ID 
      function makeid() 
      { 
       var text = ""; 
       var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 

       for(var i=0; i < 20; i++){ 
        text += possible.charAt(Math.floor(Math.random() * possible.length)); 
       } 

       text += Date.now(); 

       return text; 
      } 


      // ADD ITEM 
      $scope.addItem = function(){ 
       var created = new Date(); 
       var newID = makeid(); 

       if($scope.list.hasOwnProperty('items') === false){ 
        $scope.list.items = []; 
       } 
       $scope.list.items.push({ 
        name : $scope.newItem.name, 
        priority : $scope.newItem.priority, 
        note: $scope.newItem.note, 
        picture: $scope.newItem.picture, 
        isChecked: false, 
        listId: $scope.list.id, 
        created: created, 
        id: newID 
       }); 
       // console.log($scope.list.items); 
       $http.put(API_BASE + 'shopping-lists/', $scope.list) 
        .success(function (data, status, headers, config) { 
        }) 
        .error(function (data, status, header, config) { 
        }); 

       // Reset input fields after submit 
       $scope.newItem = { 
        name: "", 
        priority: "", 
        note: "" 
       };  
      }; 
      // ADD ITEM IMAGE 
      $scope.upload = function(){ 
      filepickerService.pick(
      { 
       mimetype: 'image/*', 
       language: 'en', 
       services: ['COMPUTER','DROPBOX','GOOGLE_DRIVE','IMAGE_SEARCH', 'FACEBOOK', 'INSTAGRAM'], 
       openTo: 'IMAGE_SEARCH' 
      }, 
      function(Blob){ 
       console.log(JSON.stringify(Blob)); 
       $scope.newItem.picture = Blob; 
       $scope.$apply(); 
       }); 
      }; 




      // REMOVE ITEM 
      $scope.removeItem = function(item){ 
       var removedItem = $scope.list.items.indexOf(item); 
       $scope.list.items.splice(removedItem, 1); 

       $http.put(API_BASE + 'shopping-lists', $scope.list) 
        .success(function (data, status, headers, config) { 
        }) 
        .error(function (data, status, header, config) { 
        }); 
      }; 


      // CLEAR ITEMS 
      $scope.clearItems = function(){ 
       $scope.list.items.length = 0; 

       $http.put(API_BASE + 'shopping-lists', $scope.list) 
        .success(function (data, status, headers, config) { 
        }) 
        .error(function (data, status, header, config) { 
        }); 
      }; 


      // CLEAR CHECKED ITEMS 
      $scope.clearCheckedItems = function(){ 
       var length = $scope.list.items.length-1; 

       for (var i = length; i > -1; i--) { 
        if ($scope.list.items[i].isChecked === true) { 
          $scope.list.items.splice(i,1); 
        } 
       } 

       $http.put(API_BASE + 'shopping-lists', $scope.list) 
        .success(function (data, status, headers, config) { 
        }) 
        .error(function (data, status, header, config) { 
        }); 
      }; 

      //Edit Items/Checked Items 
      $scope.editItem = function(){ 

       $http.put(API_BASE + 'shopping-lists', $scope.list) 
        .success(function (data, status, headers, config) { 
        }) 
        .error(function (data, status, header, config) { 
        }); 
      }; 

      // SORT ITEMS 
      $scope.sortBy = function(propertyName) { 
      $scope.reverse = ($scope.propertyName === propertyName) ? !$scope.reverse : false; 
      $scope.propertyName = propertyName; 
      }; 

     }]); 

    }()); 

Прямо сейчас, я не могу получить для загрузки страницы на всех. Что-то не называется должным образом, я просто не могу понять, как получить страницу для загрузки (получение Filestack для правильной работы является вторичным сейчас).

Любые предложения с конфигурацией?

ответ

1

Вы не должны объявить модуль для вашего контроллера,

var app = angular.module('myApp'); 

Изменить как этот же вам не хватает «filepickerService» в то время как inecting,

angular.module('myApp').controller('ShoppingListController', ['$scope', '$http','filepickerService', '$routeParams', 'API_BASE', '$location', function($scope, $http, filepickerService, $routeParams, API_BASE, $location){ 
+0

Это ничего не меняет. Все еще имеет ошибку инжектора и не загружается. –

+0

@EvanReller проверить обновленную версию, отсутствующую filepickerService, – Sajeetharan

+0

@EvanReller это сработало? – Sajeetharan

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