我正在遵循 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) ->
我遇到的问题是,在更新 create_at、id 和 Updated_at 键时,我无法将某些属性传递到后端。
如何在将 JSON 发送到服务器之前删除这些 key ?
更新
我想我可以使用这样的东西,但是有更好的方法吗?
$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) ->
最佳答案
强烈建议使用众所周知的高性能实用程序库,例如 Lo-Dash或Underscore 。使用其中任何一个,您都可以轻松选择包含 key 白名单或排除黑名单 key 列表。
白名单示例:
_.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如果你使用众所周知的Restangular库决定变得更加容易,因为它已经依赖于 Lodash(或 Underscore)。
关于javascript - AngularJS 从 postdata 中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18094224/