2013-12-03 4 views
7

Когда я делаю $http.post в AngularJS с объектом, как:

{ name: '232', id: '3434', $type: "API.Models.Fields.ValuesList, API" } 

с подписью:

$http.post('api/records', model); 

атрибутом $type удаляются каждый раз на хромированном движении слушатель независимо от значения.

Есть ли какой-то секретный $ remover;)?

ОБНОВЛЕНИЕ: ANGULAR> = 1.3 ТЕПЕРЬ НЕ УДАЛЯЕТ $ ATTRS.

ответ

11

Да, Угловые полосы с префиксом доллара при отправке данных по $http услуг.

$ http service сериализует объекты для строки JSON с использованием метода angular.toJson. Этот метод разбивает свойства с ведущими символами $, потому что угловые использует эту нотацию внутри (например, метод экземпляра $save доступен на всех объектах ngResource).

Быстрый обходной путь заключается в stringify данных вручную (с помощью JSON.stringify), перед передачей его на $http:

$http.post('/api/path', JSON.stringify(model)); 
+0

Благодаря Стьюи. Странно, что он удаляет их, но я думаю, что это имеет смысл, учитывая, что его собственные свойства обычно имеют префикс $ – amcdnl

+0

. Что, если нам нужно отправить регулярное выражение или что-то еще? JSON.stringify не позволяет этого. – Devin

+0

Формат @Devin JSON не позволяет использовать RegExp, Function, Date или даже undefined. Единственными допустимыми типами являются число, объект, массив, истина, ложь, значение null. См. Http://json.org/ для полной спецификации. – thynctank

Смежные вопросы