【问题标题】:AngularJS removing data from postdataAngularJS 从 postdata 中删除数据
【发布时间】:2013-08-08 06:55:50
【问题描述】:

我正在遵循来自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) ->

【问题讨论】:

    标签: javascript ruby-on-rails json angularjs coffeescript


    【解决方案1】:

    强烈建议使用众所周知的高性能实用程序库,例如 Lo-DashUnderscore。使用其中任何一种,您都可以轻松地选择包含密钥白名单,或排除列入黑名单的密钥列表。

    白名单示例:

    _.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)。

    【讨论】:

      猜你喜欢
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多