AngularJS资源 - 将url字符串参数编码为数组

时间:2014-09-04 03:56:15

标签: angularjs angular-resource

我从Angular的$资源中获取了这个奇怪的网址:

DELETE /dashboard/api/1.0/journalEntry?0=5&1=4&10=9&11=3&12=2&13=f&14=7&15=f&16=1&17=6&18=1&19=4&2=0&20=9&21=2&22=a&23=a&3=7&4=9&5=6&6=e&7=e&8=5&9=f

当我真正期待的是:

DELETE /dashboard/api/1.0/journalEntry/540796ee5f932f7f161492aa

我已尝试过该网址,服务器端似乎正常运行。这是Angular Router Service的一个问题。

我在这里定义服务:

'use strict';
angular.module('mean.dashboard')
.factory('JournalEntry', ['$resource',
  function($resource){
    return $resource('dashboard/api/1.0/journalEntry/:journalEntryId/', {
      journalEntryId: '@_id'
    }, {
      update: {
        method: 'PUT'
      }
    });
  }
]);

这里是我称之为资源的控制器:

$scope.editDeleteRow = function(item) {
  console.log(item._id);
  JournalEntry.remove(item._id).$promise.then(
    function(response) {
      $scope.addAlert('edit', 'Deleted', 'success');
      //TODO remove item from client list
      $scope.groupJournalEntries();
    },
    function(err) {
      $scope.addAlert('add', 'Error ' + err.statusText, 'danger');
      console.log(err);
    }
  );
};

我想念的是什么?

1 个答案:

答案 0 :(得分:0)

我赶时间,所以我一直没想到这一点。这与@没有按照我预期的方式工作有关。我得到它来定义这样的服务:

.factory('JournalEntry', ['$resource',
  function($resource){
    return $resource('dashboard/api/1.0/journalEntry/:journalEntryId', {
    }, {
      update: {
        method: 'PUT'
      }
    });
  }
]);

并且这样称呼它:

  JournalEntry.remove({journalEntryId: item._id}).$promise.then(