Найти объекты $resource в массиве и пропустить push, если существует / угловой
Я ломаю голову над этим.
Из моего бэкэнда я получаю данные json для моего поля ввода typeahead. Как только значение выбрано, я извлекаю полный объект из бэкэнда, используя уникальный идентификатор, который приходит с ответом автозаполнения.
Следующее, что я делаю, это помещаю этот объект в массив, а затем делаю итерацию по этому массиву, чтобы отобразить в HTML все отлично.
но я хотел бы проверить сначала, если объект уже находится в массиве. для этого я использую свойство array.indexOf, однако по какой-то причине оно никогда не найдет совпадения: я надеюсь, что кто-то может мне помочь:
вот код:
фабрика:
productServices.factory('Product', ['$resource',
function($resource){
return $resource('http://127.0.0.1:5000/products/:id', {id: '@id'}, {
query: { method:'GET',
isArray:false,
responseType:'json',
cache:true},
update: { method:'PUT' }
получить продукт из бэкэнда и отправить в массив:
$scope.onSelect = function ($item, $model, $label) {
$scope.$item = $item
// call the .addProduct service to push the product.get result into a list
acProductService.addProduct(Product.get({ id: $scope.$item.id }));
// this is to retrieve the list
$scope.products = acProductService.getProducts();
// reset field
$scope.selected = '';
};
сервис для отправки данных в массив и для вывода списка (поэтому здесь на addProduct я хотел бы проверить, находится ли объект уже в массиве)
autocompServices.service('acProductService', function() {
var productList = [];
var addProduct = function(newObj) {
console.log(productList.indexOf(newObj)); ---- here is my issue it will never find the newObj despite i've added it many times
productList.push(newObj);
console.log(productList.indexOf(newObj)); -- does work but i need to check before pushing to the list and not after;
};
var getProducts = function(){
return productList;
};
return {
addProduct: addProduct,
getProducts: getProducts
};
Я предполагаю, что $ resource.get возвращает что-то уникальное, независимо от того, что объект, полученный из серверной части, на самом деле уникален. любая помощь, пожалуйста.. спасибо