Javascript 角度注入(未知提供程序)

Javascript 角度注入(未知提供程序),javascript,angularjs,Javascript,Angularjs,我试图从我的服务器api中获取一些json数据。url为/contacts。 我得到一个关于未知提供者的错误,但我不明白我在这里做错了什么。我再次修改了代码,但似乎再次发生 (函数(){ var app=angular.module('test',['ngRoute','Contacts','$http']); app.config(函数($routeProvider,$locationProvider){ $locationProvider.html5Mode(true); $routePr

我试图从我的服务器api中获取一些json数据。url为/contacts。 我得到一个关于未知提供者的错误,但我不明白我在这里做错了什么。我再次修改了代码,但似乎再次发生

(函数(){
var app=angular.module('test',['ngRoute','Contacts','$http']);
app.config(函数($routeProvider,$locationProvider){
$locationProvider.html5Mode(true);
$routeProvider
.当(“/”时{
templateUrl:“partials/main.html”,
控制器:“contactsCtrl”
})
。否则({重定向至:“/”});
});
app.service('Contacts',function($scope,$http){
this.data=null;
this.all=函数(){
$http.get('/contacts')。
成功(功能(数据){
$scope.contacts=数据;
})
};
});
应用控制器('contactsCtrl',功能($scope,Contacts){
Contacts.all().query(函数(数据){
$scope.contacts=数据;
});
});
}());

名字

角度模块的工作原理是将它们注入到您的应用程序中

var app = angular.module('test', ['ngRoute']);
你需要做的事情是这样的

var app = angular.module('test', ['ngRoute','http']);
下面是我目前在一个项目中使用的一个工作http请求的示例

  var data = $.param({
      workers: JSON.stringify({
          user_name: "name",
          password: "work",
          email: "work@work"
      })
  });

  $http.post("http://ec2-xx-x-xx-xx.compute-1.amazonaws.com/api/user/reg", data).success(function(data, status) {          
      $scope.user = data.user_name;
      $scope.email = data.email;
      $scope.access_token = data.access_token;
  });

您当前正在此处将联系人作为新模块注入:

var app = angular.module('test', ['ngRoute', 'Contacts', '$http']);
您不需要它,因为Contacts是一项服务,是同一模块的一部分。将此行更新为:

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

问题是您试图将
$scope
注入到
服务中

作用域是应用程序控制器和视图之间的粘合剂

请看一下这本书

而不是

app.service('Contacts', function($scope, $http) {
  this.all = function() {
    $http.get('/contacts').
     success(function(data) {
       $scope.contacts = data;
    })
  };
});
试一试

而不是

app.controller('contactsCtrl', function($scope, Contacts) {
  Contacts.all().query(function(data) {
    $scope.contacts = data;
  });
});
试一试


我现在按照你的建议修改了守则。它一直在发生。任何想法。非常感谢您的时间。
Contacts
是一项服务,服务不能是模块的依赖项,所以只需从这里将其删除
angular.module('test'、['ngRoute'、'Contacts'、'http'])也非常感谢
app.controller('contactsCtrl', function($scope, Contacts) {
  Contacts.all().query(function(data) {
    $scope.contacts = data;
  });
});
app.controller('contactsCtrl', function($scope, Contacts) {
  Contacts.all().then(function(data) {
    $scope.contacts = data;
  });
});