我试图根据模型isActive
属性设置一个“非活动”或“活动”类的元素。
<tr class="inactive">
而且我拥有的是什么。 '无效'是默认值。生成的渲染是所有tr元素都具有'inactive'类
var ItemView = Backbone.View.extend({
tagName: "tr",
className: 'inactive',
render : function() {
this.className = this.model.get('Active') ? 'active' : 'inactive';
...
this.$el.html( this.template(data) );
}
});
找到一些小字体
className: function() {
var el = this.model.get('Active') ? 'active' : 'inactive'; // Set active flag in class
return el;
},
但是,现在得到错误:'this.model' is undefined
建议在初始化之前运行className函数。我使用默认的初始化程序。 this.model
中的render
从未出现过问题。
答案 0 :(得分:0)
如果您要检查模型是否处于活动状态,为什么还要打扰使用默认的className?在我看来,如果你在渲染函数时设置它,你会跳过默认值。此外,将className添加到模板中可能更容易:
template: _.template('<tr class="<% active ? 'active' : 'inactive' %>">...</tr>');
然后,您无需担心其他任何地方可能会发生变化而且代码更少。
编辑:
这是一个链接,它提供了另一种动态侦听属性更改和更新视图的方法:
How can I dynamically set a className for a Backbone.js view based on it's model attributes?
答案 1 :(得分:0)
我使用jquery addClass添加了运行时类名。
render: function() {
var isactive = this.model.get("Active") ? "" : "inactive";
this.$el.removeClass('inactive').addClass(isactive);
}