Найти объекты $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 возвращает что-то уникальное, независимо от того, что объект, полученный из серверной части, на самом деле уникален. любая помощь, пожалуйста.. спасибо

0 ответов

Другие вопросы по тегам