Javascript 解除视图与模型的绑定

Javascript 解除视图与模型的绑定,javascript,backbone.js,Javascript,Backbone.js,这个jsfiddle()演示了我遇到的问题,但我将在这里解释。我有一个主视图,它具有startInterval和stopInterval功能。在startInterval中,我调用一个方法,将值添加到我使用codethis.model=new myModel()在startInterval函数中创建的模型内的stats数组中。如果我停止,然后再次startInterval(此时代码再次运行this.model=new myModel()),则从第一次按下startInterval按钮开始,它仍然

这个jsfiddle()演示了我遇到的问题,但我将在这里解释。我有一个主视图,它具有
startInterval
stopInterval
功能。在startInterval中,我调用一个方法,将值添加到我使用code
this.model=new myModel()
startInterval
函数中创建的模型内的stats数组中。如果我停止,然后再次
startInterval
(此时代码再次运行
this.model=new myModel()
),则从第一次按下
startInterval
按钮开始,它仍然是相同的数组

例如,如果我按start,随机数3被添加到stats数组中(在
addToModel
函数中),然后按stop,然后再次按start,这会在stats数组中添加一个5,数组实际上会有一个3和一个5。如果按start和stop,可以在JSFIDLE中看到值打印到屏幕上

在我的实际应用程序中,我尝试过将stats数组设置为
[]
,但无法清除它。理想情况下,我希望从模型中取消对视图的引用

startInterval: function(){

    this.model = new myModel();
    this.model.intervalId =            setInterval(this.addToModel.bind(this), 1000);

},

stopInterval: function(){

    clearInterval(this.model.intervalId);
    var modelstats = this.model.get("stats");


},
addToModel: function(){
    var arr = this.model.get("stats");
    var num = Math.floor((Math.random() * 10) + 1);

    var view = new StatView({model: this.model});  

    arr.push(num);
    this.model.set({"stats" : arr });
}
有什么解决办法吗

虽然我的代码没有显示它,但模型最终会被添加到集合中,然后保存到数据库中,因此如果唯一的解决方案涉及到销毁模型,请考虑这一点(即,有没有办法在不从集合中删除模型的情况下销毁模型)

您的“统计信息”属性通过默认值在原型上共享。 因为在javascript中,数组和对象是可变的,所以它引用同一个数组,而不创建新数组。 您可以做的是将默认值作为返回默认值的函数—这样,每个实例的默认值都是唯一的

var myModel = Backbone.Model.extend({

  defaults: function () {
    return {        
      stats: [],
      intervalId: ''

    }
  }

});