2014-10-21 5 views
14
$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 и т. Д.

ответ

22

Проблема в том, что delete - это ключевое слово javascript, а IE8 слегка его анализирует. Согласно стандарту, идентификаторы можно назвать delete. Быстрое исправление:

$http['delete']('/api/carts/' + productCode) 

Немного некрасиво, и я не думаю, что хорошие угловые люди должны назвали этот метод удаления, но это исправляет проблему

2

удалить это 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

+0

Почему этот ответ был downvoted? –

+0

Я бы включил решение как часть ответа, а не только URL-адрес, так как ссылка, которую вы опубликовали, может стать мертвой в будущем. – Makotosan

+0

@Makotosan, вам больше всего нравится улучшать этот ответ. :) –

3

$http.delete(path) ярлык для DELETE запросов. Так как сокращенные перерывы на IE8, кроме вызова по форме uglly: $http['delete'], вы можете позвонить, используя оригинальный режим:

$http({method: 'DELETE', url: path}) 
Смежные вопросы