【发布时间】:2015-05-11 21:29:43
【问题描述】:
我正在构建一个 Ember 应用程序,该应用程序需要在加载应用程序时将容器 DIV 的大小调整为完整的窗口高度,然后在转换到新路由时再次运行相同的调整大小功能,然后在调整窗口大小时也运行。
在普通网站上,我会这样做:
var appUI = {
init: function(){
appUI.sizeContainer();
},
sizeContainer: function(){
var winHeight = jQuery(window).height();
jQuery('#container').height(winHeight);
},
onResize: function() {
appUI.sizeContainer();
}
}
jQuery(document).ready(function($){
appUI.init();
jQuery(window).resize(function(){
appUI.onResize();
});
});
但显然这在 Ember 中不起作用。
这不能是一个组件,因为#container DIV 包装了整个当前视图。但是随着 Ember 远离视图,我应该怎么做呢?
我想出的唯一方法是使用视图,并连接到didInsertElement,但我不知道如何在不必为每条路线创建 view.js 文件的情况下做到这一点,其中包含相同的调整大小代码?那么调整大小事件呢?我认为应用程序视图didInsertElement 可能适用于此,但它只在加载时运行一次。
我所有的路线模板基本上都遵循这个模式:
{{top-header}}
{{background-image image=backgroundImage}}
{{side-menu session=session menuOpen=menuOpen}}
<div id="container" class="vert-center route-name">
{{partial "_logo"}}
{{some-component}}
</div>
【问题讨论】:
-
什么是
livinUI?如果我理解正确,您想在应用加载、新路由加载或窗口大小调整时调用sizeContainer函数?您的所有模板(对于每条路线)是否都在#container内,还是需要动态设置此 ID? -
@nem 我更新了问题以显示模板示例。我用 var 修正了错字,它应该是
appUI。是的,我想要一个函数在加载、新路由和调整大小时运行(但也许有比我想知道的更多的 Ember 方式)。#container不是动态的,它存在于每个模板中。
标签: javascript jquery ember.js resize