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