2016-09-26 100 views
0

我有问题时,从服务注入依赖关系到控制器。虽然我加入,但的未知供应商factoryprovider < - 工厂< - 控制器角js

Unknown provider: websiteFactoryProvider <- websiteFactory <- listCtrl

还是同样的错误,我基本上需要渲染NG-以我的index.html

的Index.html

<div ng-view> 

</div> 

app.js

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

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

    when('/list', { 
     templateUrl: 'app/views/list.html', controller: 'listCtrl' 
    }). 

    otherwise({ 
     redirectTo: '/list' 
    }); 

}]); 

websiteService.js

app.factory('webiteFactory', ['$http', '$location', function ($http, $location) { 

    var factory = {}; 

    // method that return all websites from an http request 
    factory.getAllWebsites = function() { 
     return $http.get("http://localhost/Replicate/GetAllWebsites"); 
    } 

    //method that returns an object from given array 
    factory.getFilteredObject = function (list, websiteName) { 
     for (i = 0 ; i < list.length ; i++) { 
      if (list[i].Name == websiteName) 
       return list[i]; 
     } 
    } 


    return factory; 
}]); 


/* application services that would not return values */ 
app.service('websiteService', ['$http', function ($http) { 

    //service for pagination 
    this.paginate = function ($scope) { 

     //pagination code 
     $scope.currentPage = 1; 
     $scope.totalItems = $scope.model.length; 
     $scope.numPerPage = 10; 
     $scope.paginate = function (value) { 
      var begin, end, index; 
      begin = ($scope.currentPage - 1) * $scope.numPerPage; 
      end = begin + $scope.numPerPage; 
      index = $scope.model.indexOf(value); 
      return (begin <= index && index < end); 
     }; 


     //ordering code 
     $scope.reverse = true; 
     $scope.order = function (predicate) { 
      $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; 
      $scope.predicate = predicate; 
     }; 
    } 

    //service to change state of a website 
    this.changeSiteState = function (website) { 
     var newState = website.State == "Stopped" ? "Started" : "Stopped"; 
     $http({ 
      method: 'POST', 
      url: '/Replicate/ChangeState/', 
      data: JSON.stringify({ webName: website.Name, state: newState }), 
      headers: { 'Content-Type': 'application/json' } 
     }).success(function (data) { 
      if (data == "success") { 
       website.State = website.State == "Stopped" ? "Started" : "Stopped"; 
      } 
      else { 
       alert(data); 
      } 

     }).error(function (data, status, headers, config) { 
      alert(data); 
     }); 
    } 
}]) 

listCtrl.js

app.controller('listCtrl', function websiteCtrl($scope, $location, websiteFactory, websiteService, $modal) { 

    //function triggered at the intialization of controller 
    $scope.init = function() { 
     $scope.model = []; 
     setTimeout(function() { 
      websiteFactory.getAllWebsites().success(function (data) { 
       $scope.model = data; 
       websiteService.paginate($scope); 
      }) 
     }, 0); 
    }; 

    //delegation of change state to service method 
    $scope.changeState = function (website) { 
     websiteService.changeSiteState(website); 
    } 

    //open modal and shows details of single object 
    $scope.showDetails = function (websiteName) { 
     var modalInstance = $modal.open({ 
      templateUrl: '../Views/Replicate/Details.html', 
      controller: 'DetailsCtrl', 
      resolve: { 
       obj: function() { 
        return websiteFactory.getFilteredObject($scope.model, websiteName); 
       } 
      } 
     }); 
    } 

}); 
+0

你又写道的工厂名称错误。 'webiteFactory'!='websiteService' – taguenizy

+0

只是一个错字;)“webiteFactory”你忘记了一个“S” –

+0

是的,你是对的@Foubert。感谢您纠正愚蠢的问题。 – Umar

回答

1

你拼错了“websiteFactory”。在您的工厂定义的代码是“webiteFactory”,但在控制器,你用不同的名称中使用“websiteFactory”这就是为什么它是不是能找到这个供应商和生产错误获取它: 变化:

app.factory('websiteFactory', ['$http', '$location', function ($http, $location) { 

    var factory = {}; 

    // method that return all websites from an http request 
    factory.getAllWebsites = function() { 
     return $http.get("http://localhost/Replicate/GetAllWebsites"); 
    } 

    //method that returns an object from given array 
    factory.getFilteredObject = function (list, websiteName) { 
     for (i = 0 ; i < list.length ; i++) { 
      if (list[i].Name == websiteName) 
       return list[i]; 
     } 
    } 


    return factory; 
}]); 
-1

当你的工厂未与角度注册的错误出现。将其更改为

app.factory('websiteFactory', ['$http', '$location', function ($http, $location) { 
    ...do something here... 
} 
+0

以上评论有什么不同?它是不是已经注册? – lightstalker89

相关问题