我有一个 Backbone 视图,其中 className 使用函数动态设置:
app.Views.ItemRequestView = Backbone.View.extend({
tagName : 'tr',
className : function(){
var classRow = '';
if(this.model.getState() == app.Models.Request.status.wait.key) {
classRow = app.Models.Request.status.wait.color + ' bolder';
}
else if(this.model.getState() == app.Models.Request.status.confirm.key){
classRow = app.Models.Request.status.confirm.color + ' bolder';
}
return classRow;
},
当我更新视图的模型时,我会触发渲染视图的更改事件。
问题是 className 不会随渲染重新计算...
渲染视图时如何重新计算 className ?
有人有主意吗?
谢谢
您必须更新您的class
之后手动render
方法。骨干网初始化className
期间仅查看视图元素一次_ensureElement
method:
_ensureElement: function() {
if (!this.el) {
var attrs = _.extend({}, _.result(this, 'attributes'));
if (this.id) attrs.id = _.result(this, 'id');
if (this.className) attrs['class'] = _.result(this, 'className');
var $el = Backbone.$('<' + _.result(this, 'tagName') + '>').attr(attrs);
this.setElement($el, false);
} else {
this.setElement(_.result(this, 'el'), false);
}
}
如果您看一下,它会检查该元素是否已存在。
无论如何,您可以在您的render
method:
render: function(){
//Your logic
this.$el.attr('class', _.result(this, 'className'));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)