骨干如何观察数据变化?

时间:2013-11-27 15:08:13

标签: angularjs backbone.js ember.js

Angular使用脏检查来捕获数据更改并相应地更改模型或视图。 Ember为每个元素设置观察者来完成这个过程。 但骨干是如何做到的呢?

2 个答案:

答案 0 :(得分:1)

Backbone不会处理更新视图的数据更改(默认情况下)。

让我们看看。

Backbone.Model拥有Backbone.Events的所有方法。因此,当数据发生变化时,Model会调用this.trigger()函数。

但是您应该订阅“更改”事件来处理所有数据操作:

myModel.on('change:attributeName', myView.render, myView);

也许最好说Backbone使用setter和Backbone.Events来观察数据变化。

答案 1 :(得分:1)

正如@Leestex所回答的那样,骨干网不会为您绑定数据更改。

但是,最好在视图中使用listenTo。例如:

MyView = Backbone.View.extend({

  initialize: function() {
    this.listenTo(this.model, 'change', this.render);
  }

});

请参阅: http://backbonejs.org/#Events-listenTo

视图监听模型事件的另一种方法是将处理程序附加到模型,如下所示:

this.model.on('change', this.render);

但通常不建议这样做,因为您必须使用off()手动分离处理程序。当你正在听多个模型时,这可能会变得混乱并可能导致 zombie views

使用listenTo()的好处是可以调用stopListening(),它将取消绑定与该对象关联的回调。在这种情况下,该对象是视图。