Angularjs $http.delete перерывы на ie8
$http.delete('/api/carts/' + productCode).
success(function() {
cart.products = someMethod();
updateTotals();
}).
error(function() {
console.log('Could not remove product from card: ' + productCode);
});
IE8 жалуется, что "ожидаемый идентификатор" в первой строке. Код отлично работает в Firefox, Chrome и т.д.
Ответы
Ответ 1
Проблема заключается в том, что delete
является ключевым словом javascript, а IE8 слегка анализирует его. Согласно стандарту, идентификаторы можно назвать delete
. Быстрое исправление:
$http['delete']('/api/carts/' + productCode)
Немного уродливый, и я не думаю, что хорошие люди angular должны были назвать этот метод delete, но это исправляет вашу проблему
Ответ 2
$http.delete(path)
является ярлыком для запросов DELETE
.
Так как ярлык разбивается на IE8, помимо вызова их уродливой формы: $http['delete']
, вы можете вызывать с использованием исходного режима:
$http({method: 'DELETE', url: path})
Ответ 3
delete - это зарезервированное ключевое слово JavaScript, а IE анализирует его как ключевое слово.
Вот решение.
http://tech.pro/tutorial/1238/angularjs-and-ie8-gotcha-http-delete
Вот список зарезервированных ключевых слов javascript
http://www.w3schools.com/js/js_reserved.asp
поэтому лучше использовать $http['delete']
вместо $http.delete