【发布时间】:2015-02-08 16:21:16
【问题描述】:
我对 Angular 很陌生,并且有这样的表单(大约 15 个输入和选择):
<div id="configForm" data-ng-controller="seutpController">
<form name="configForm" data-ng-submit="update()" novalidate>
<input id="id" type="hidden" data-ng-model="config.id" />
<input id="company" type="text" data-ng-model="config.company" data-ng-blur="test()"/>
<input id="street" type="text" data-ng-model="config.street" data-ng-blur="test()" />
</form>
<input type="submit" />
</div>
什么已经在起作用:
在提交时进行 AJAX 调用,它使用配置对象中的所有值更新数据库。没什么大不了的。
我想做的事:
进行 AJAX 调用(在 Blur 上),但我只想发送一个由用户更改的键/值对,例如:
$http({
url: 'api/setConfig.php',
method: 'POST',
data: {'company': 'value'}
})
我是否必须将 $event 作为函数参数发送,例如 ng-blur="test($event)" 并从那里获取元素 ID 和值?
谢谢@大家!
编辑
是否可以使用 $watchCollection 并监视 $scope.config 对象?
【问题讨论】:
-
事件本身可能并不有趣,但您可以将已模糊的字段作为参数传递给
ng-blur函数,例如ng-blur('company')。在您的控制器中,只需验证此更新后的字段并通过$http调用将其传递给服务器。 -
已经在考虑这个了。会工作。感谢您的帮助。
-
NP!回复:$watchCollection 问题,这种方法可能也有效,但我认为它会在输入字段中的每次击键时触发。这将使确定输入字段编辑何时完成并应保留到后端变得更加复杂。但是,如果您想要那种容错能力,这可能是在 5 秒超时后处理保存的好方法。