【问题标题】:How to destroy previously created view instance while creating the new instance for the same view in Backbone.js如何在 Backbone.js 中为同一视图创建新实例时销毁先前创建的视图实例
【发布时间】:2014-11-20 09:23:05
【问题描述】:
我在我的项目中使用 Backbone.js。
我在另一个视图的渲染函数中创建了一个视图的新实例
render: function (data) {
var newView = new View();
}
需要一次又一次地调用相同的渲染函数而不刷新页面。如果我这样做,它会创建多个实例。
如何在创建新实例之前销毁/隐藏先前创建的实例?
【问题讨论】:
标签:
javascript
backbone.js
backbone-views
backbone-events
backbone-routing
【解决方案1】:
存储对视图的引用,然后在使用 view.remove / view.undelegateEvents / 自定义代码创建新实例时将其销毁以完全分离它:
render: function() {
if (this.subview)
this.subview.remove();
this.subview = new View();
}
【解决方案2】:
下面是一个简单的方法。我已经用过很多次了。
假设你声明了一个全局变量(比如'globalHandle)
render: function (data) {
if(globalHandle.newView)
return globalHandle.newView;
var newView = new View();
globalHandle.newView = newView;
}
此外,您可以从应用程序的任何部分引用globalHandle.newView 以检查它是否存在。