我一直在尝试将一个处理程序附加到我的一个Backbone视图中的resize事件。在做了一些研究之后,我发现你只能将事件附加到视图的元素或其后代。如何使用Backbone将调整大小事件添加到视图中的窗口?
这对我来说是一个问题,因为我试图实现的视觉效果不可能使用纯CSS,并且需要一些JS根据窗口减去标题元素来设置内容区域元素的尺寸。
如果您有麻烦形象化什么,我试图做的,想象的薄头和必须占据,没有CSS背景挂羊头卖狗肉的剩余空间内容区域;)
我已经附上代码示例。如果你有其他的指点,我也很乐意听到他们!
define(
[
'jQuery',
'Underscore',
'Backbone',
'Mustache',
'text!src/common/resource/html/base.html'
],
function ($, _, Backbone, Mustache, baseTemplate) {
var BaseView = Backbone.View.extend({
el: $('body'),
events: {
'resize window': 'resize'
},
render: function() {
var data = {};
var render = Mustache.render(baseTemplate, data);
this.$el.html(render);
this.resize();
},
resize: function() {
var windowHeight = $(window).height();
var headerHeight = this.$el.find('#header').height();
this.$el.find('#application').height(windowHeight - headerHeight);
}
});
return new BaseView;
}
);
任何援助将不胜感激我的脸。
三江源, 亚历
Thankyou为您的快速回复!但是,走出Backbone的事件层是否是不好的做法? – 2012-02-02 09:50:51
我会说不要太担心。 resize事件不会与你的MVC结构进行任何复杂的交互,所以你不会因为只有一个单独的监听器而失去任何东西 – wheresrhys 2012-02-02 09:52:15
Thankyou澄清对我来说 – 2012-02-02 09:54:26