2016-11-27 2 views
1

У меня есть форма поиска с несколькими полями. Если пользователь ничего не вводит в поле, он все равно будет отправлен на сервер со значением «null».
Однако в этой форме имеется около 25 дополнительных (расширенных) полей, и если пользователь ничего не вводит в нее, JSON не должен содержать это поле вообще.
Итак, мой вопрос: есть ли какой-то способ (шаблон, возможно), чтобы избежать этих 25 "if() else"? Каков наилучший способ создания этого финального JSON?
Спасибо!AngularJS форма. Дополнительные свойства в JSON

UPD: Спасибо, @RIYAJKHAN за ваш ответ! мне удалось решить самостоятельно, используя LoDash:

private compactObject(obj) { 
     let compactObj = this.removeEmptyProperties(_.cloneDeep(obj)); 
     _.forEach(compactObj, (value, key) => { 
     if (_.isObject(value)) { 
      compactObj[key] = this.compactObject(this.removeEmptyProperties(compactObj[key])); 
     } 
     }); 
     return this.removeEmptyProperties(compactObj); 
    }; 

    private removeEmptyProperties(obj) { 
     let trimedObj = _.cloneDeep(obj); 
     _.forEach(trimedObj, (value, key) => { 
     if (!value || _.isEmpty(trimedObj[key])) { 
      delete trimedObj[key]; 
     } 
     }); 
     return trimedObj; 
    } 
+0

, что случилось с просто отправив их утратившими на сервер? – toskv

ответ

2
<form name="form" ng-submit="submit(form)"> 

    <input type="text" name="test1" ng-model="test1"> 
    <input type="text" name="test2" ng-model="test2"> 
    <input type="text" name="test3" ng-model="test3"> 

<input type="button" name="submit"> 
</form> 

JavaScript:

$scope.submit = function(form){ 

    for(var prop in form){ 
     if(!!!form[prop]){ 
       delete form[prop]; 
     } 
    }//form will contain form prop having only valid values 
} 
Смежные вопросы