为了解决Marionette 2中的问题而苦苦挣扎。
在我的应用程序的各个部分,我有以下触发器,因此当更改货币时,将呈现视图。
App.on("currency:change", function() {
cartView.render();
totalsView.render();
});
如果通过刷新页面加载,这在单个页面上工作正常,但是在使用此页面导航2页之后,我收到错误。
未捕获的ViewDestroyedError:视图已被破坏且无法使用。
在调查中,它看起来正在尝试从上一页渲染视图。
每个页面都由一个模块定义,该模块在加载或关闭时启动并停止运行,并且视图似乎被破坏,因此对于如何发生这种情况有点困惑。我的第一个假设是上一页的观点尚未完全删除,但我认为这是Marionette自动完成的。
答案 0 :(得分:1)
我看起来您正在使用已经删除的视图的引用。我的第一个假设是你应该重新创建视图:
App.on("currency:change", function() {
cartView = new CartView();
totalView = new TotalView();
cartRegion.show(cartView)
totalRegion.show(totalView);
});
我不确定您的应用程序是如何运作的,但我猜您有类似 currencyCollection 或 currencyModel 的内容。如果是,您的观点应该听取该模型的更改并刷新自己,然后" currency:更改" 事件将不再需要。