0

我正在使用 Backbone 渲染一个方形瓷砖元素,在该元素中设置高度,然后动态设置宽度以匹配高度。但是,当尝试获取元素高度时,我被0退回了。

这是我的代码:

var app = app || {};

app.ClassModelView = Backbone.View.extend({
    className: 'tile',

    template: _.template('<%= name %>'),

    render: function() {
        var dim = 'calc(' + parseInt(100 / app.global.rows) + '% - ' + app.global.margin * (app.global.rows + 1) + 'px)'; //e.g. "30% - 20px"
        this.$el.append(this.template(this.model.attributes)).css({
            margin: app.global.margin + 'px',
            height: dim,
        }).css({
            width: this.$el.height() + 'px',
        });

        return this;
    }
})

如何将宽度设置$el为高度?我不确定我是否在语法上做错了什么,或者是否是我使用 Backbone 的方式导致了我的问题。

4

1 回答 1

1

我过去也遇到过类似的问题。在大多数情况下,这是因为我的视图已经渲染但还没有插入到 DOM 中。这在处理嵌套视图时很常见。

您可以通过在 onRender 方法中设置断点并检查 this.$el.parent() 来测试这一点。您可能想要查找一些父元素以确保父元素在 DOM 中。

您可以通过绑定到 DOMNodeInserted 事件来解决此问题:

this.$el.on('DOMNodeInserted', function(e) { console.log($(e.target).outerHeight()); })
于 2013-08-31T13:01:37.313 回答