/ / AngularJSがpostdataからデータを削除する-javascript、ruby-on-rails、json、angularjs、coffeescript

ポストデータからデータを削除するAngularJS - javascript、ruby-on-rails、json、angularjs、coffeescript

私はmightygioの例に従っています(http://mightygio.com/2013/05/integrating-rails-and-angularjs-part-3-rest-and-angular-resource)そして更新時にpostDataを単純化したいと思います。

現在私はこれを持っています

  $scope.update = ->
Letter.update
id: $stateParams["id"]
,
letter:
subject: $scope.letter.subject
body: $scope.letter.body

# success
, (response) ->
$location.path "/letters"

# failure
, (response) ->

大量のデータを含む大きなフォームがある場合、これはかなり長くなり、保守が困難になります。次のように$ scope.letterを渡すことができればもっといいでしょう:

  $scope.update = ->
Letter.update
id: $stateParams["id"]
,
letter: $scope.letter

# success
, (response) ->
$location.path "/letters"

# failure
, (response) ->

私が抱えている問題は、created_at、id、updated_atキーを更新するときに、特定の属性をバックエンドに渡せないことです。

JSONをサーバーに送信する前にこれらのキーを削除するにはどうすればよいですか?

更新

このようなものを使用できると思いますが、もっと良い方法はありますか?

  $scope.update = ->
letter = {}
#  Strip out id, created_at & updated_at
angular.forEach($scope.letter, (value,key) ->
if(key!="id" && key!="created_at" && key!="updated_at")
letter[key]=value
,letter)

Letter.update
id: $stateParams["id"]
,
letter: letter
# success
, (response) ->
$location.path "/letters"

# failure
, (response) ->

回答:

回答№1は0

次のような有名でパフォーマンスの高いユーティリティライブラリを使用することを強くお勧めします。 Lo-Dash または アンダースコア。これらのいずれかを使用すると、キーのホワイトリストを含めるか、ブラックリストに登録されたキーのリストを除外するかを簡単に選択できます。

ホワイトリストの例:

_.pick({name: "moe", age: 50, userid: "moe1"}, "name", "age");
=> {name: "moe", age: 50}

ブラックリストの例:

_.omit({name: "moe", age: 50, userid: "moe1"}, "userid");
=> {name: "moe", age: 50}

PSあなたがよく知られているを使用する場合 矩形 ライブラリはすでにLodash(またはアンダースコア)に依存しているため、決定はさらに簡単になります。