我一直在比较 js mvc,并注意到很多人都在吹嘘 canjs 所做的“实时绑定”。有人可以解释一下它到底是什么,以及与其他流行的 mvc 相比,它有什么帮助,如主干js、脊柱等......
user240993
问问题
1332 次
2 回答
6
您使用实时绑定,因为使用 CanJS,您将所有代码替换为:
<h1><%= model.attr('name') %></h1>
于 2012-09-07T16:13:06.873 回答
3
Backbone 确实支持实现模型绑定,但它不像其他一些客户端应用程序框架那样是自动的,例如AngularJS的数据绑定 throughng-controller
或EmberJS的bindAttr
。
对于在模型状态更改时更新视图的一些非常基本的代码,请使用Backbone.View
's events
object,如下例所示:
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>
这实质上是render
在模型更改时从 UI 和批发(重新定义整个视图)进行手动绑定。Backbone 被有意设计为不像其他一些框架那样固执己见,以允许您通过添加其他库来实现您认为合适的东西。
有关如何更自动地建模绑定的一些更复杂的技术,以下是其作者列出的一些资源:
于 2012-07-27T21:05:32.327 回答