Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.02.2019, 17:29
Новичок на форуме
Отправить личное сообщение для stim644 Посмотреть профиль Найти все сообщения от stim644
 
Регистрация: 06.01.2019
Сообщений: 6

Цикл отрабатывает несколько раз
Всем привет. Столкнулся с проблемой, что цикл отрабатывает несколько раз. Сейчас привет пример в коде.
app.component.Html:
<div *ngFor="let item of offers1(); let i = index" >
<button type="button" class="btn btn-secondary" (click)="fetchOffer(2)" >edit</button>
</div>

Ts:
import { Component } from '@angular/core';
import { LogManagerService } from './_modules/LogginService/log-manager.service';
import {Router} from '@angular/router';
import {Offer} from './models/Offer';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'appspress-tracker-frontend';

  constructor(private logger: LogManagerService) {
    logger.debug('AppComponent initialized');
  }

  offers1() {
    this.logger.debug('offers log');
    const mockRepository = {
      getOffers: function () {
        return [
          new Offer(1, 'test1', ['RU', 'BR', 'IN']),
          new Offer(2, 'test2', ['GB']),
          new Offer(3, 'test3', ['RU']),
          new Offer(3, 'test3', ['RU']),
          new Offer(3, 'test3', ['RU'])
        ];
      }
    };
    return mockRepository.getOffers();
  }

  fetchOffer(id) {
    this.logger.debug('offers log');
  }
}


Т.е. метод offers1 вызывается по несколько раз, когда отображается компонент. Даже и не могу понять, в чем может быть проблема. Подскажете?
Ответить с цитированием
  #2 (permalink)  
Старый 17.02.2019, 10:18
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Цитата:
Даже и не могу понять, в чем может быть проблема
Внутренняя кухня ангуляра, т.е. при каждом ChangeDetection, метод offers1 возвращает новую ссылку на массив. https://github.com/angular/angular/i...ment-165015520
Вызывайте этот метод где-нибудь в OnInit, записывайте результат в переменную и оперируйте в шаблоне именно ей.
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2019, 12:36
Новичок на форуме
Отправить личное сообщение для stim644 Посмотреть профиль Найти все сообщения от stim644
 
Регистрация: 06.01.2019
Сообщений: 6

Сообщение от destus Посмотреть сообщение
Внутренняя кухня ангуляра, т.е. при каждом ChangeDetection, метод offers1 возвращает новую ссылку на массив. https://github.com/angular/angular/i...ment-165015520
Вызывайте этот метод где-нибудь в OnInit, записывайте результат в переменную и оперируйте в шаблоне именно ей.
Да, спасибо. Понял. Просто я столкнулся именно с этой проблемой когда не понял, почему у меня ангуляровское событие click не срабатывает, когда я нажимаю на кнопку edit, срабатывает событие и я проваливаюсь в шаблон конкретного офера, потом захожу через меню снова в шаблон список офферов и пытаюсь снова нажать на кнопку. Но событие не срабатывает во второй раз! Подскажите почему такое может произойти? Спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 18.02.2019, 17:55
Новичок на форуме
Отправить личное сообщение для stim644 Посмотреть профиль Найти все сообщения от stim644
 
Регистрация: 06.01.2019
Сообщений: 6

В общем была проблема из за <ng-selectize [config]="tagsConfig" [(ngModel)]="tagsVal"></ng-selectize>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
действие Один раз за цикл alexmixaylov jQuery 7 17.02.2016 22:53
Меню на JQuery раскрывается и закрывается несколько раз Sqaier jQuery 3 21.06.2015 08:15
Менять цвет фона несколько раз Timid jQuery 5 06.06.2015 10:00
Как сделать kwicks цикл один раз alexvost jQuery 3 22.03.2012 18:07
live click выполняется несколько раз hara jQuery 9 09.06.2010 10:58