2015-09-05 180 views
0

我想从我的服务器api获取一些json数据。网址是/ contacts。 我收到关于未知提供者的错误,但我不明白我在这里做错了什么。我再次修改了代码,但似乎再次发生。角度注射(未知供应商)

(function() { 
 

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

 
    app.config(function($routeProvider, $locationProvider) { 
 
    $locationProvider.html5Mode(true); 
 

 
    $routeProvider 
 
     .when("/", { 
 
      templateUrl: "partials/main.html", 
 
      controller: "contactsCtrl" 
 
     }) 
 
     .otherwise({redirectTo:"/"}); 
 

 
    }); 
 
    
 
    app.service('Contacts', function($scope, $http) { 
 
    this.data = null; 
 

 
    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; 
 
    }); 
 
    }); 
 
    
 
    
 
}());
<table class="table table-bordered"> 
 
    <thead> 
 
    <th>Firstname <input type="search" class="pull-right"></th> 
 
    </thead> 
 
    <tbody> 
 
    <tr ng-repeat="contact in contacts"> 
 
     <td> 
 
     <a ng-href="/edit/{{ contact.firstname }}">{{ contact.firstname }}</a> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

'Contacts'是服务,服务不能依赖于模块,所以只需从这里删除'angular.module('test',['ngRoute','Contacts','$ http']);' – Grundy

+0

非常感谢你 – pap

回答

0

您正在注入联系人作为这里一个新的模块:

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

你不需要这个作为联系人是服务和相同的模块的一部分。更新此行:

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

非常感谢你 – pap

0

角模块,通过它们注入到你的应用程序在这里工作。

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: "[email protected]" 
     }) 
    }); 

    $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; 
    }); 
+0

我现在已根据您的建议修改了代码。它一直在发生。有任何想法吗。非常感谢您的宝贵时间。 – pap

0

的问题是你想注入$scope到您的service

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

请看documentation。取而代之的

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

尝试

app.service('Contacts', function($http) { 
    this.all = function() { 
    return $http.get('/contacts'); 
    }; 
}); 

而不是

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; 
    }); 
}); 
相关问题