繁体   English   中英

页面加载到Backbone / Marionette应用程序后,如何获取DOM元素的高度?

[英]How do I get the height of a DOM element once the page has loaded in a Backbone / Marionette application?

我有一个Backbone / Marionette布局,上面有一些视图。 我需要将两个视图(实际上是两个当前具有不同高度的div)的高度调整为相同。

我使用了$(document).ready(function () {}); 就在关闭body标签之前,以及在所有处理视图加载以获取高度的脚本之后,但它输出null。 这是为什么? 页面加载完成后,如何获取以下CompositeViews的高度?

List.TopQueries = Backbone.Marionette.CompositeView.extend({
template: "#topqueries-template",
itemView: List.QueryItem,
className: "block blue",

appendHtml: function (collectionView, itemView) {
  // Do something here
},
onRender: function () {
  // Do something here
},

onClose: function () {
  // do something here
}
});

List.FailedQueries = Backbone.Marionette.CompositeView.extend({
template: "#failedqueries-template",
itemView: List.QueryItem,
className: "block red",

appendHtml: function (collectionView, itemView) {
  // Do something here
},
onRender: function () {
  // Do something here
},

onClose: function () {
  // Do something here
}
});

对于UI中应该已经附加到DOM的检查(例如,检查某些div的大小),您应该使用“ onDomRefresh”事件

https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md#view-domrefresh--ondomrefresh-event

Backbone.Marionette.ItemView.extend({
    onDomRefresh: function(){
    // manipulate the `el` here. it's already
    // been rendered, and is full of the view's
    // HTML, ready to go.
    }
});

如果您需要“等待”直到在Layout中的某些视图已呈现并完全附加到DOM上,则应侦听这些视图的onDomRefresh ,而不是Layout之一。

当布局本身完全附加到DOM时,将触发布局的onDomRefresh 它不会等到其所有子区域都显示一个视图(毕竟,您可以随时在Layout子区域中显示/关闭视图,这样就没有多大意义了)。

(我以为您是在询问“木偶版式”,因此上面的解释,由于可能值得了解,我将其保留在此处)。

不过,叶夫根尼(Evgeniy)建议使用CSS来解决此问题而无需使用Javascript,这可能是解决您的特定问题的更好方法(我的回答是主要问题: 一旦页面显示后如何获取DOM元素的高度加载到主干/木偶应用程序中?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM