我正在AngularJS中创建一个小型联系人应用程序,并希望通过调用Web服务来检索数据。
我在VS中创建了两个项目(一个网站用于angularJS代码,一个Web应用程序用于Web服务代码)。我把它们都放在同一个解决方案下。
这是我的index.html标记:
<body ng-app="app" ng-controller="controller" ng-cloak>
<div class="header" ng-bind="header"></div>
<div class="content">
<!-- This content will switch -->
<ui-view></ui-view>
</div>...
我的contacts.html标记,位于ui-view标记内:
<ul>
<li ng-repeat="c in contacts" >...
在JS中,我创建了以下服务:
// Contacts Service
app.service("getContacts", function ($http, $q) {
// web-service path
var ws = "http://localhost:65123/";
var getContact = function () {
//create defer object
var contactsPromise = $q.defer();
$http.get(ws + "api/Contact")
.then(function (res) { contactsPromise.resolve(res);
}, function (err) { contactsPromise.reject(err); });
return contactsPromise.promise;
};
return
{ getContact: getContact }
});
和以下索引控制器:
//index(root) Controller
app.controller("controller", function ($scope,getContacts) {
$scope.contacts = getContacts.getContact().then(function(res){ $scope.contacts = res; });
});
在Web应用程序中,我创建了一个模型:
public class Contact
{
public string name;
public string phone;
public string mail;
public string address;
public static List<Contact> getContacts() {
// TODO retrieve Contacts from DB
List<Contact> c = new List<Contact>();
c.Add(new Contact() { name="aaaa", phone="111", mail="aaaa@gmail.com",address="sdsd"});
c.Add(new Contact() { name = "bbbb", phone = "222", mail = "b@g.com", address = "sss" });
c.Add(new Contact() { name = "cc", phone = "444", mail = "a@l.com", address = "ggg" });
return c;
}
及其控制器:
namespace WebApplication1.Controllers
{
public class ContactController : ApiController
{
// GET: api/Contact
public List<Contact> Get()
{
return Contact.getContacts();
}
}
}
当我运行整个项目(包括Angular和WS)时,出现ERR_CONNECTION_REFUSED错误。 这可能是什么问题?使用$ http的ajax调用有问题吗?
P.S。我在Web应用程序中允许使用CORS。
答案 0 :(得分:1)
作为依赖项添加的“ getContacts”将仅返回一个Promise,而不返回您想要的列表。它应该看起来像这样:
//index(root) Controller
app.controller("controller", function ($scope,getContacts) {
getContacts.then(function(contacts){ $scope.contacts = contacts; });
});
我希望这是您正在寻找的答案!