错误:[$ injector:unpr]未知提供者:starterServiceProvider< - starterService

时间:2017-04-24 08:28:38

标签: angularjs ionic-framework service dependency-injection controller

我在控制台中遇到错误。我正在使用angular-v1 with angular,我的后端是php,mysql

 Error: [$injector:unpr] Unknown provider: starterServiceProvider <- starterService
    http://errors.angularjs.org/1.2.12/$injector/unpr?p0=starterServiceProvider%20%3C-%20starterService
        at ionic.bundle.js:7536
        at ionic.bundle.js:11004
        at Object.getService [as get] (ionic.bundle.js:11131)
        at ionic.bundle.js:11009
        at getService (ionic.bundle.js:11131)
        at invoke (ionic.bundle.js:11158)
        at Object.instantiate (ionic.bundle.js:11179)
        at ionic.bundle.js:14238
        at ionic.bundle.js:13647
        at forEach (ionic.bundle.js:7768)

这是我的app.js

    var app = angular.module('starter', ['ionic','starter','starterService'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }
  });
})

这是我的controllers.js
它是一个控制器,用于注入从HTML页面调用的数据并调用服务"starterServices"

    .controller('ToDoListCtrl',['starterService' , function($scope,$ionicModal,starterService) {
        $scope.toDoListItems = [{
        task: 'Scuba Diving',
        status: 'not done'
      }, {
        task: 'Climb Everest',
        status: 'not done'
      }];

    $scope.AddItem = function(data){
         var addTask = starterService.addtask();
       addTask.then(function(data){
          $scope.task = data.task;
          $scope.status = data.status;
        });
        };
      /*$scope.toDoListItems.push({task:data.newItem,status:'not done'});
         data.newItem = ' ';
             $scope.closeModalAdd();*/

    $scope.DeleteItem = function(data){
          var ans = confirm('Are you sure to delete it?');
          if(ans){
            var deleteTask = starterService.delTask(task);

             alert('Sucessfully deleted task ',+ data.task);

          }

      /*
      $scope.toDoListItems.pop({task: data.newItem});
       data.newItem = ' ';
             $scope.closeModalDelete();
      */
        alert('Sucessfully deleted task ');

      };

    $ionicModal.fromTemplateUrl('modal.html', {
        scope: $scope,
        animation: 'slide-in-up'
      }).then(function(modal) {
        $scope.modal = modal;
      });

    $ionicModal.fromTemplateUrl('dmodal.html', {
        scope: $scope,
        animation: 'slide-in-up'
      }).then(function(dmodal) {
        $scope.dmodal = dmodal;
      });

      $scope.openModalAdd = function() {
        $scope.modal.show();
      };
      $scope.closeModalAdd = function() {
        $scope.modal.hide();
      };

      $scope.openModalDelete = function() {
        $scope.dmodal.show();
      };
      $scope.closeModalDelete = function() {
        $scope.dmodal.hide();
      };
      //Cleanup the modal when we're done with it!
      $scope.$on('$destroy', function() {
        $scope.modal.remove();
            $scope.dmodal.remove();
      });

    }]);

这是我的service.js

app.service('starterService', function($http){

    var serviceUrl = "http://localhost/2404/CRUD Ionic/www/php/";

    this.addtask = function(data){
        var response = $http({
            method : "POST",
            url : serviceUrl + "createTask.php",
            params : data
        });
        return response;

    };
    this.delTask = function(task){
        var response = $http ({
            method : "POST",
            usr : serviceUrl + "deleteTask.php",
            params : {task}
        });
        return response;
    };


});    

1 个答案:

答案 0 :(得分:1)

app模块应该是这样的:

var app = angular.module('starter', ['ionic'])

因为它不依赖于任何名为'starterService'的模块。这是一项服务,而不是一个模块。此处仅允许将模块添加为依赖项。

<强>更新

您也忘了提供适当的依赖关系映射。

.controller('ToDoListCtrl',['$scope','$ionicModal', 'starterService' , function($scope,$ionicModal,starterService) {
    $scope.toDoListItems = [{
    task: 'Scuba Diving',
    status: 'not done'
  }, {
    task: 'Climb Everest',
    status: 'not done'
  }];

$scope.AddItem = function(data){
     var addTask = starterService.addtask();
   addTask.then(function(data){
      $scope.task = data.task;
      $scope.status = data.status;
    });
    };
  /*$scope.toDoListItems.push({task:data.newItem,status:'not done'});
     data.newItem = ' ';
         $scope.closeModalAdd();*/

$scope.DeleteItem = function(data){
      var ans = confirm('Are you sure to delete it?');
      if(ans){
        var deleteTask = starterService.delTask(task);

         alert('Sucessfully deleted task ',+ data.task);

      }

  /*
  $scope.toDoListItems.pop({task: data.newItem});
   data.newItem = ' ';
         $scope.closeModalDelete();
  */
    alert('Sucessfully deleted task ');

  };

$ionicModal.fromTemplateUrl('modal.html', {
    scope: $scope,
    animation: 'slide-in-up'
  }).then(function(modal) {
    $scope.modal = modal;
  });

$ionicModal.fromTemplateUrl('dmodal.html', {
    scope: $scope,
    animation: 'slide-in-up'
  }).then(function(dmodal) {
    $scope.dmodal = dmodal;
  });

  $scope.openModalAdd = function() {
    $scope.modal.show();
  };
  $scope.closeModalAdd = function() {
    $scope.modal.hide();
  };

  $scope.openModalDelete = function() {
    $scope.dmodal.show();
  };
  $scope.closeModalDelete = function() {
    $scope.dmodal.hide();
  };
  //Cleanup the modal when we're done with it!
  $scope.$on('$destroy', function() {
    $scope.modal.remove();
        $scope.dmodal.remove();
  });