При запуске функции в другом представлении представление отображается дважды - PullRequest
0 голосов
/ 01 марта 2020

У меня есть два представления в моем приложении, первое представление - это модальное диалоговое окно, а второе - это то, откуда модально запускается изначально. После закрытия модального я запускаю функцию во втором представлении, используя функцию события запуска. Функция во втором виде запускается, однако она дважды визуализирует весь второй вид. Я прочитал о зомб ie видах и убедился, что отменил и удалил модальное представление на тот случай, если оно вызывало повторяющиеся события, но это не сработало.

Вот мой класс модального представления:

var BaseModalView = base.views.View.extend({
  tpl: templates.get('modalTmp'),
  className: 'modal-view',
  events: {
    'evt:show': 'show',
    'evt:hide': 'hide',
    'click [data-action=resume-push-market]': 'proceed',
  },
  initialize: function(options) {
    this.options = options;
    _.bindAll(this, 'render', 'show', 'hide', 'remove');
    this.render();
  },
  render: function() {

    this.$el.html(this.tpl(this.options));
    this.$el.appendTo('body');
    this.$modal = this.$('.modal');

    this.$modal.on('hidden.bs.modal', _.bind(function() {
      this.close();
    }, this));


  },
  show: function() {
    this.$modal.modal('show');
  },
  hide: function() {
    this.$modal.modal('hide');
  },
  proceed: function() {
    e.preventDefault();
    e.stopPropagation();
    this.hide();
    this.vent.trigger('resume', true);
  },
  close: function() {
    //unbind events
    this.unbind();
    //Remove html from page
    this.remove();
  },

});
export default BaseModalView;

Вот как я слушаю триггер во втором представлении:

this.listenTo(this.vent,'resume', this.resume);

После некоторой отладки я заметил, что модальное представление освобождается и удаляется только после того, как второй вид отображается дважды после запуска функции. Я не уверен, что это нормальное поведение, так как я очень плохо знаком с Backbone. js. Буду признателен за любую помощь.

ОБНОВЛЕНИЕ: Я думаю, что я сузился до того, что вызывает дополнительные рендеры. Второе представление - это элемент в коллекции, поэтому, если у этой коллекции есть только один элемент, то есть одно представление, то когда моя функция запускается из модального режима, она будет повторно отображать это представление один раз. Однако если в коллекции несколько представлений, то при запуске функции каждое представление будет перерисовано. Я инициализировал модальное представление в каждом элементе в коллекции, так что технически он должен отображать только один элемент (представление) в коллекции, но каждый раз отображает их все. Снова не уверен, правильно ли я преувеличиваю последовательности событий магистрали. Если кто-то сталкивался с подобной проблемой, пожалуйста, дайте мне знать

1 Ответ

0 голосов
/ 01 марта 2020

Нашли способ обойти это, передав параметры модели исходного представления в модальное представление, а затем, после того, как функция сработала и представления перерисовываются, я проверяю, что только представление, которое создало модальное окно, обновляется с предполагаемой информацией путем сравнения просматривать идентификаторы. Это очень грязный способ сделать это, я уверен.

...