Marionette 2.0 - 未捕获ViewDestroyedError:视图已被破坏且无法使用。

时间:2014-10-22 15:51:03

标签: backbone.js marionette

为了解决Marionette 2中的问题而苦苦挣扎。

在我的应用程序的各个部分,我有以下触发器,因此当更改货币时,将呈现视图。

App.on("currency:change", function() {
          cartView.render();
          totalsView.render();
        });

如果通过刷新页面加载,这在单个页面上工作正常,但是在使用此页面导航2页之后,我收到错误。

  

未捕获的ViewDestroyedError:视图已被破坏且无法使用。

在调查中,它看起来正在尝试从上一页渲染视图。

每个页面都由一个模块定义,该模块在加载或关闭时启动并停止运行,并且视图似乎被破坏,因此对于如何发生这种情况有点困惑。我的第一个假设是上一页的观点尚未完全删除,但我认为这是Marionette自动完成的。

1 个答案:

答案 0 :(得分:1)

我看起来您正在使用已经删除的视图的引用。我的第一个假设是你应该重新创建视图:

App.on("currency:change", function() {
      cartView = new CartView();
      totalView = new TotalView();


      cartRegion.show(cartView)
      totalRegion.show(totalView);

});

我不确定您的应用程序是如何运作的,但我猜您有类似 currencyCollection currencyModel 的内容。如果是,您的观点应该听取该模型的更改并刷新自己,然后" currency:更改" 事件将不再需要。