2016-11-27 12 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 
} 
関連する問題