Meteor.js:如何通过Javascript动态设置div高度
我使用的是模板/把手,但当浏览器窗口调整大小时,不会触发任何事件处理程序。不确定如何捕获调整大小事件,以便将div的高度动态设置为在视口内 以下是我迄今为止使用meteor事件图尝试的示例:Meteor.js:如何通过Javascript动态设置div高度,javascript,meteor,handlebars.js,dom-events,Javascript,Meteor,Handlebars.js,Dom Events,我使用的是模板/把手,但当浏览器窗口调整大小时,不会触发任何事件处理程序。不确定如何捕获调整大小事件,以便将div的高度动态设置为在视口内 以下是我迄今为止使用meteor事件图尝试的示例: Template.basic.events({ 'resize window' : function(evt, tmpl){ alert("test"); }, }; 理想情况下,每次调整窗口大小时都会调用此处理程序,这样我就可以使用$(window.height()在
Template.basic.events({
'resize window' : function(evt, tmpl){
alert("test");
},
};
理想情况下,每次调整窗口大小时都会调用此处理程序,这样我就可以使用
$(window.height()
在html中使用tmpl.find('#main div')设置div的高度代码>大多数直接依赖jQuery的问题都可以使用回调来解决,如下所示:
Template.basic.onRendered(function() {
$(window).resize(function() {
console.log($(window).height());
});
});
从技术上讲,这是可行的,但由于在渲染过程中从来不会删除window
,因此这种技术有一个很大的缺点:每次渲染模板时,它都会添加一个新的调整大小处理程序
由于窗口
始终可用,因此您可以使用创建的
和销毁的
回调来注册和注销处理程序:
Template.basic.onCreated(function() {
$(window).resize(function() {
console.log($(window).height());
});
});
Template.basic.onDestroyed(function() {
$(window).off('resize');
});
但是,请注意,在中停止调整大小处理程序可能不是您真正想要的。有关更多详细信息,请参阅问题
还请注意,在meteor的当前版本中,您可以检查事件处理程序的数量,如下所示:
$._data($(window).get(0), "events").resize.length