针对单个输入对Blur发出AJAX请求
我对Angular非常陌生,有这样一个表单(大约15个输入和选择): 我是否必须发送$event作为函数参数,如ng blur=“test($event)”并从中获取元素Id和值 谢谢大家 编辑针对单个输入对Blur发出AJAX请求,ajax,angularjs,forms,Ajax,Angularjs,Forms,我对Angular非常陌生,有这样一个表单(大约15个输入和选择): 我是否必须发送$event作为函数参数,如ng blur=“test($event)”并从中获取元素Id和值 谢谢大家 编辑 是否可以使用$watchCollection并在$scope.config对象上监视?我认为最好发送$event,因为这将是最可扩展的解决方案。我过去也做过类似的事情: <input name="title" ng-blur="ctrl.onFieldChanged($event)" type="
是否可以使用$watchCollection并在$scope.config对象上监视?我认为最好发送$event,因为这将是最可扩展的解决方案。我过去也做过类似的事情:
<input name="title" ng-blur="ctrl.onFieldChanged($event)" type="text" ng-model="ctrl.title"/>
希望这有帮助。在视图中
onblur=test(config.company,'name')
在控制器中
$scope.test = function(value,name){
$http({
url: '...',
method: 'POST',
name: value
});
希望有帮助事件本身可能并不有趣,但您可以将模糊的字段作为参数传递给
ng blur
函数,如ng blur('company')
。在控制器中,只需验证此更新字段,并通过$http
调用将其传递给服务器。我们已经想到了这一点。会有用的。谢谢你的帮助。NP!Re:$watchCollection问题,这种方法可能也有效,但我认为它会在输入字段中的每次击键时触发。这将使确定输入字段编辑何时完成并应持久化到后端变得更加复杂。不过,如果你想获得这种容错能力,这可能是一种很好的方法来处理5秒超时后的保存。谢谢,我已经用同样的方法进行了处理,但它开始感觉有点脏,因为只需要获取密钥名称(“公司”)就可以将整个$event作为param发送。
<input name="title" ng-blur="ctrl.onFieldChanged($event)" type="text" ng-model="ctrl.title"/>
this.onFieldChanged = function ($event) {
var data = {};
data[$event.currentTarget.name] = self[$event.currentTarget.name];
$http({
url: '...',
method: 'POST',
data: data
});
};
$scope.test = function(value,name){
$http({
url: '...',
method: 'POST',
name: value
});