2011-05-21 49 views
13

AngularJS site上的Cookbook表单示例仅保存客户端上的状态。我如何提交给服务器?AngularJS - 如何向服务器上的控制器提交表单?

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

编辑 - 找到2点的方式来做到这一点(我也删除HTML标记之前我贴 - 只是指的是高级形式食谱例如对于源)

  1. http://webpac2.rot13.org:3000/conference/Work(由多布里察Pavlinusic)去AngularJS使用资源将数据以JSON格式发送到服务器。我在服务器端遇到了一些问题 - AngularJS发送的很好,但是grails正在修改它(根据firebug和请求内容的长度)。我需要更多地考虑这一点。如何更改资源方法(如$save())的角度内容类型?

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

只是把这个放在这里,让其他人可以使用这个可能的解决方案和最好的方法。

+0

你能告诉你当前的标记和代码?重新你的PS:这可能是一样糟糕,因为它可能是好的... – 2011-05-21 14:57:16

+0

@marcel - 没有渲染我的复制粘贴正确。我希望你能从中理解。感谢您的帮助 – 2011-05-21 15:06:47

+0

您可以在发送给浏览器时使用HTML标记(使用'查看源代码'),因此我们无需弄清楚生成的HTML会是什么样子。毕竟,这是JavaScript会看到的。 – 2011-05-21 16:26:05

回答

0

据我所知,没有一个很好的方法来修改头向角色发送到服务器的标头,期望为editing angular source。这是计划的增强,但它还没有完成。

我认为angular google group可能是更好的地方来问这样的具体问题,因为开发人员非常友好和知识渊博。

12

注意,有视图(你的HTML模板)和逻辑(你的JS代码)的严格分离 - 这主要是因为可测性。

正确的做法是只送你的模型到服务器,使用$资源(用于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); 
    }; 
} 
+0

如果我使用'this.save = function ...',那是行不通的。我必须在控制器中使用'$ scope.save = function ...'。 – Voles 2012-09-10 10:11:03

+2

@Voles谢谢,更新到当前v1语法(答案是用0.9。*语法编写的) – Vojta 2012-09-11 07:09:58

+0

当我在服务器端转储请求时没有提交任何内容。它是一个空数组:'Log :: write(print_r($ _ REQUEST,true))' – Michelle 2012-09-13 09:12:33

相关问题