如何连接更改模型中的某些字段以反映视图? 我有模型,其中包含font-weight,我在视图中有该模型,但是如何连接模型中提交的 font-weight 的更改以反映来自视图的 el ? / p>
答案 0 :(得分:6)
有几种方法可以在这里应用,取决于你想要多么精致。
initialize: function(){
this.model.on( "change", this.render, this );
}
initialize: function(){
this.model.on( "change:title", this.renderTitle, this );
this.model.on( "change:body", this.renderBody, this );
this.model.on( "change:fontWeight", this.renderFontWeight, this );
}
这需要公司使用最小的渲染方法来修改DOM作为外科医生:
renderTitle: function(){
this.$el.find( "h1" ).html( this.model.get( "title" ) );
},
renderBody: function(){
this.$el.find( "p" ).html( this.model.get( "body" ) );
},
renderFontWeight: function(){
this.$el.find( "p" ).css( "font-weight", this.model.get( "fontWeight" ) );
}
我没有提供这种方法的任何示例,因为实现可能更复杂。只需认为您的实际View
实例化了多个SubViews
,一个用于title
,另一个用于body
,依此类推。每个人都有自己的render
,并在属性更改时绑定其具体Model
属性和re-render
的更改。
答案 1 :(得分:1)
试试这个:
var Font = {};
Font.Model = Backbone.Model.extend({
defaults: {
font_family: 'Arial, Helvetica, sans-serif',
font_size: 12,
font_weight: 'normal'
}
});
Font.View = Backbone.View.extend({
initialize: function() {
var this_view = this;
this.model.bind('change:font_weight', function(model) {
// Do something with this_view.el
alert('handle the font-weight change');
});
}
});
var myFontModel = new Font.Model();
var myFontView = new Font.View({
model: myFontModel
});
myFontModel.set({font_weight: 'bold'});