【发布时间】:2013-03-02 11:04:23
【问题描述】:
我刚刚开始使用角度和编码,所以请耐心等待......
我目前正在尝试编写一个类似电话簿的基本 CRUD 应用程序。到目前为止,我添加和查看联系人都没有问题,但我被困在如何通过 $http.put 和 MongoLab 的 API 在 MongoLab 上更新我的模型
任何正确方向的帮助或指示将不胜感激!
附上我的 UpdateCtrl 函数和相关表格(此处放了一个通用 URL 用于演示目的):
controller.js
function UpdateCtrl($scope, $http, $routeParams, $location){
$scope.contactId = $routeParams.contactId;
var url = 'https://api.mongolab.com/api/databases/<d>/collections/<c>/<id>;
$http.get(url).
success(function(mongoDataById) {
$scope.contact = mongoDataById;
});
$scope.updateContact = function() {
$http.put(url, $scope.contact);
};
}
update.html(部分视图)
<form ng-submit="updateContact()">
<label for="fullname">Name</label>
<input type="text" id="fullname" ng-model="contact.fullname" ><br/>
<label for="email">Email</label>
<input type="text" id="email" ng-model="contact.email"><br/>
<label for="phone">Phone</label>
<input type="text" id="phone" ng-model="contact.phone"><br/>
<button type="submit">Update</button>
</form>
编辑
@Stewie 和@Arun P Johny,当我执行 updateContact() 时,控制台中似乎没有任何错误。我怀疑它发送的 PUT 请求与初始 GET 请求产生的数据相同,即使当前 $scope 中的表单已进行了更改。 (是的,我的 Url 中有一个特定的contactId - 在浏览器中测试,它会提取我选择的特定联系人的数据)
@pkozlowski.opensource - 是的,当我开始这个项目时,我实际上添加了那个库,但是当我能够使用相当简单的 $http POST 和 GET 函数时,我觉得没有必要。如果我无法使用基本的 $http.put,现在可以尝试一下。
【问题讨论】:
-
那么,当
updateContact被调用时会发生什么?它是否向正确的 API 端点发送请求?你的控制台有什么错误吗?您是否在 PUT 网址中指定了联系人 ID? -
可能是同源策略的原因,查看控制台是否有错误
-
mongolab 不支持 jsonp,所以我认为唯一的解决方案就是以某种方式使用 CORS 支持,虽然我还没有这样做
-
您可能想查看这个项目:github.com/pkozlowski-opensource/angularjs-mongolab-promise,这使得在 AngularJS 中使用 MongoLab 变得相当容易。它还包括对 PUT(更新)请求的支持。
-
@pkozlowski.opensource 刚刚使用 mongolab-promise 重新设计了我的应用程序。现在效果很好!对我的模块进行了一些重新布线以及如何设置路由,但最终让它工作了。
标签: http angularjs crud put mlab