我一直在比较js mvc,并注意到很多人都在吹嘘canjs的“活动绑定”。有人可以解释它究竟是什么以及它与其他流行的mvc(如backbonejs,spine等)相比有何帮助...
答案 0 :(得分:6)
您使用实时绑定,因为使用CanJS,您可以用以下代码替换所有代码:
<h1><%= model.attr('name') %></h1>
答案 1 :(得分:3)
Backbone确实支持实现模型绑定,但它不像其他客户端应用程序框架那样自动,例如,AngularJS的数据 - 通过ng-controller
或EmberJS的bindAttr
绑定。
对于一些真正基本的代码来更新视图作为模型的状态更改,请使用Backbone.View
的{{3}},如下例所示:
var ExampleView = Backbone.View.extend({
id: 'myView',
events: {
// using an #id selector here is also acceptable
'change [data-attrname=name]': function(e) {
// update the value in the model
this.model.set('name', $(e.target).val());
}
},
initialize: function(options) {
this.model.on('change', this.render, this);
},
render: function() {
var html = _.template('<h1 data-attrname="name"><%= name %></h1>',
this.model.toJSON());
this.$el.html(html);
return this;
}
});
将呈现以下HTML(myView
是ExampleView隐式创建的div):
<div id="myView">
<h1 data-attrname="name"></h1>
</div>
这实际上是在模型更改时从UI手动绑定并批量处理(重新render
整个视图)。 Backbone被故意设计为比其他一些框架更不自觉,允许您按照自己认为适合添加其他库的方式实现。
关于如何更自动地建模绑定的一些更复杂的技术,以下是他们的作者列出的一些资源: