对单个输入进行模糊的AJAX请求

时间:2014-12-10 12:55:00

标签: ajax angularjs forms

我对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调用(模糊),但我只想发送用户更改的一个键/值对,如:

$http({
    url: 'api/setConfig.php',
    method: 'POST',
    data: {'company': 'value'}
})

我是否必须将$ event作为函数参数发送,例如ng-blur =&#34; test($ event)&#34;从那里获取元素ID和值?

谢谢@ all!

修改

是否可以使用$ watchCollection并在$ scope.config对象上观看?

2 个答案:

答案 0 :(得分:1)

我认为发送$ event可能是最好的,因为这将是最可扩展的解决方案。我过去做过类似的事情:

<input name="title" ng-blur="ctrl.onFieldChanged($event)" type="text" ng-model="ctrl.title"/>

在我的方法中,为了方便起见,我将输入命名为与其绑定的ng-model相同的名称。在控制器中,这就是我所做的:

this.onFieldChanged = function ($event) {
    var data = {};
    data[$event.currentTarget.name] = self[$event.currentTarget.name];

    $http({
      url: '...',
      method: 'POST',
      data: data
    });
  };

希望这有帮助。

答案 1 :(得分:0)

在视图中

onblur=test(config.company,'name')

在控制器中

    $scope.test = function(value,name){

             $http({
      url: '...',
      method: 'POST',
      name: value
    });

希望有所帮助