javascript – 设置Backbone.View的动态css样式属性

我正在尝试设置< ul>的高度,宽度和背景图像.元件.

这是我为Backbone.View获得的内容

var RackView = Backbone.View.extend({

    tagName: 'ul',className: 'rack unselectable',template: _.template($('#RackTemplate').html()),render: function () {
        this.$el.html(this.template(this.model.toJSON()));
        return this;
    },attributes: function () {
        var isFront = this.model.get('isFront');
        var imageUrlIndex = isFront ? 0 : 1;

        return {
            'background-image': 'url(' + this.model.get('imageUrls')[imageUrlIndex] + ')','height': this.model.get('rows') + 'px','width': this.model.get('width') + 'px'
        };
    }
}

这不起作用,因为属性不会写入元素的“style”属性.相反,它们被视为属性…因为函数名称而有意义,但它让我想知道 – 我如何正确地实现这样的事情?

设置后图像,高度和宽度是不可变的,如果这有助于简化…

我只是以一种风格包裹我的回报吗?这似乎过于复杂……

这是生成的HTML:

<ul background-image="url(data:image/png;base64,...)" height="840px" width="240px" class="rack unselectable">
</ul>

编辑:这有效,但我没有激怒:

attributes: function () {

    var isFront = this.model.get('isFront');
    var imageUrlIndex = isFront ? 0 : 1;

    var backgroundImageStyleProperty = "background-image: url(" + this.model.get('imageUrls')[imageUrlIndex] + ");";
    var heightStyleProperty = "height: " + this.model.get('rows') + 'px;';
    var widthStyleProperty = "width: " + this.model.get('width') + 'px;';

    return {
        'style': backgroundImageStyleProperty + ' ' + heightStyleProperty + ' ' + widthStyleProperty
    };
},

解决方法

您可以在渲染函数中使用jquery css函数
render: function () {
    this.$el.html(this.template(this.model.toJSON()));
    var backgroundImageStyleProperty = "background-image: url(" + this.model.get('imageUrls')[imageUrlIndex] + ");";
    var heightStyleProperty = "height: " + this.model.get('rows') + 'px;';
    var widthStyleProperty = "width: " + this.model.get('width') + 'px;';

    this.$el.css({
     'height'          : heightStyleProperty,'width'           : widthStyleProperty,'background-image': backgroundImageStyleProperty
    });

    return this;
},

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...