13

AngularJS 网站上的食谱表单示例仅保存客户端上的状态。如何提交到服务器?

或者,如何form.submit()在函数中的表单上使用 jQuery ng:click="save()"

编辑 - 找到 2 种方法来做到这一点(我还删除了我之前粘贴的 HTML 标记 - 只需参考源代码的高级表单食谱示例)

  1. http://webpac2.rot13.org:3000/conference/Work(由 Dobrica Pavlinusic 提供)采用 AngularJS 方式,使用资源以 JSON 格式将数据发送到服务器。我在服务器端遇到了问题 - AngularJS 发送它很好,但 grails 正在破坏它(根据萤火虫和请求内容长度)。我需要更多地研究这个。如何更改资源方法的角度内容类型$save()

  2. 放入表单并使用提交按钮。由于我不是在做单页网络应用程序,所以我使用了这种方法。大多数验证都在客户端上,而服务器上的更多验证对我来说已经足够了。

只需将其放在这里,以便其他人可以将其用于可能的解决方案和最佳方法。

4

2 回答 2

12

请注意,视图(您的 html 模板)和逻辑(您的 JS 代码)有严格的分离——主要是因为可测试性。

正确的方法是使用$resource(用于 REST)或低级别$http将模型发送到服务器。而不是在模板中完成工作。

简单示例 - HTML 模板

First: <input type="text" ng-model="person.first" />
Last: <input type="text" ng-model="person.last" />
<button ng:click="save()">Save</button>

JavaScript - 控制器

function FormCntl($scope, $http) {
  $scope.save = function() {
    $http.put('/save.py', $scope.person);
  };
}
于 2011-08-22T07:49:19.343 回答
0

据我所知,没有一个很好的方法来修改 angular 发送到服务器期望编辑 angular source的标头。这是计划中的增强功能,但仍未完成。

我认为angular google group可能是询问此类特定问题的更好地方,因为开发人员非常友好且知识渊博。

于 2011-06-01T12:34:44.883 回答