@zlodiak

Почему представление не загружается повторно?

Написал простейший сайт, который состоит из трёх страничек. Каждой страничке соответствует своё представление, роутер отрисовывает соответствующее представление в зависимости от состояния адресной строки.

роутер:
const Router = Backbone.Router.extend({
  routes: {
    '':       'page1',
    'page1':  'page1',
    'page2':  'page2',
    'page3':  'page3',
  },
  page1() {
    app.showView(pageView1);
  },
  page2() {
    app.showView(pageView2);
  },
  page3() {
    app.showView(pageView3);
  }
});
const router = new Router()


Представления:
const PageView = View.extend();
const pageView1 = new PageView({
  template: _.template('<h1>qwerty <%= header %></h1>'),
  model: pageModel1,
});
const pageView2 = new PageView({
  template: _.template('<h1>qwerty <%= header %></h1>'),
  model: pageModel2,
});
const pageView3 = new PageView({
  template: _.template('<h1>qwerty <%= header %></h1>'),
  model: pageModel3,
});


Проблема в том, что после того как пользователь понажимает ссылки навигации раз 5-7, в консоли выводится такое сообщение об ошибке:
Uncaught constructor {name: "RegionError", message: "View (cid: "view5") has already been destroyed and cannot be used.", url: "marionettejs.com/docs/v4.1.2/marionette.region.htm...", stack: "RegionError: View (cid: "view5") has already been …x/libs/backbone.js/1.4.0/backbone-min.js:1:23438)"}


Я смотрел документацию по указанной в сообщении ссылке, там написано, что ошибка может появляться, если в регионе уже показывалось представление или было уничтожено:
An error will be thrown if the view is falsy or destroyed.
An error will be thrown if the view is already shown in a Region


Но ни того, ни другого у меня в коде не происходит: LIVE DEMO

Помогите пожалуйста избавиться от этого сообщения об ошибке.
  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы