gpt4 book ai didi

backbone.js - 在 Backbone View 渲染上动态设置 className

转载 作者:行者123 更新时间:2023-12-04 14:29:14 24 4
gpt4 key购买 nike

我有一个 Backbone View ,其中 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;
},

当我更新 View 模型时,我触发了一个渲染 View 的更改事件。
问题是 className 没有用渲染重新计算......
渲染 View 时如何重新计算 className ?

有人有想法吗?
谢谢

最佳答案

您必须更新您的 class手动后 render方法。 Backbone 初始化 className_ensureElement 期间仅一次方法:

_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 中手动执行此操作。方法:
render: function(){
//Your logic
this.$el.attr('class', _.result(this, 'className'));
}

关于backbone.js - 在 Backbone View 渲染上动态设置 className,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18330877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com