Angularjs xeditable储蓄

时间:2018-01-03 14:57:34

标签: angularjs json http

我有一个包含大约30个字段的表单,一旦用户编辑一个字段并关闭输入框,函数save($data, customer.custref)就会将数据和id(custref)传递给控制器​​。我遇到的问题是将数据转换为json,然后通过补丁请求发送。

保存功能:

$scope.save = function(data, id){
    console.log(data);
    $http.patch(API_URL + "v1/customers/" + id, data)
        .then(function (response) {
            console.log("here");
        },function error(response) {
            console.log('error');
            $scope.error = response.statusText;
        });
};

HTML:

 <td data-title="'company'" >
     <p class="form-control-static"><a href="#" editable-text="customer.company" onbeforesave="save($data, customer.custref)">
          {{ customer.company || 'empty' }}
     </a></p>
 </td>

在代码片段中,我将data传递给补丁请求,但这需要是一个对象,否则它无效json:

$scope.updateObj = {

company: data.company ?? 

}

我之前没有使用xeditable做过类似的事情 在输入字段上输入ng-model并创建一个对象,如:

$scope.updateObj = {

company: $scope.company, 
name: $scope.name

}
$http.patch(API_URL + "v1/customers/" + id, updateObj){
//......

但我不能这样做,因为输入字段是为我生成的。我真的感到困惑,并希望得到任何帮助

1 个答案:

答案 0 :(得分:0)

您可以传递属性名称作为要保存的参数。

<强>控制器

$scope.save = function(data, id, fieldName){
    console.log(data);

    var patchObj = {};
    patchObj[fieldName] = data;

    $http.patch(API_URL + "v1/customers/" + id, patchObj)
        .then(function (response) {
            console.log("here");
        },function error(response) {
            console.log('error');
            $scope.error = response.statusText;
        });
};

<强> HTML

 <td data-title="'company'" >
     <p class="form-control-static"><a href="#" 
                                       editable-text="customer.company" 
                                       onbeforesave="save($data, customer.custref, 'company')">
          {{ customer.company || 'empty' }}
     </a></p>
 </td>

工作示例:https://plnkr.co/edit/mo1z4Ju4LiVF9zYGRoNW?p=preview