<li ng-repeat="x in products">
https://docs.angularjs.org/api/ng/directive/ngRepeat
Angularowa dyrektywa służąca do iterowania po kolekcjach. Udostępnia ona kilka propertisów, m.in.: $index, który odpowiada za aktualny iterator pętli. Tenże iterator jest przesyłany do funkcji removeItem() podpiętej do $scope kontrolera.
<span ng-click="removeItem($index)">
, dzięki czemu wewnątrz tej funkcji dostępny jest aktualny indeks elementu, w który kliknąłeś.
$scope.removeItem = function (x) {
$scope.errortext = "";
$scope.products.splice(x, 1);
}
W funkcji na tablicy products wykonywana jest metoda splice(). Dokonuje ona usunięcia jednego elementu zaczynając od przekazanego indeksu.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
Pierwszym parametrem (w funkcji oznaczonym jako x, który jest tym przekazanym iteratorem z dyrektywy ng-repeat) jest numer indeksu w tablicy, od którego chcesz zacząć usuwać elementy. drugim jest ilość usuwanych elementów - w przypadku tej funkcji, jest to jeden element.