gpt4 book ai didi

javascript - 如何使用 Backbone 将调整大小事件添加到 View 中的窗口?

转载 作者:可可西里 更新时间:2023-11-01 01:57:39 25 4
gpt4 key购买 nike

我一直在尝试将处理程序附加到我的一个主干 View 中的调整大小事件。在做了一些研究之后,我发现您只能将事件附加到 View 的元素或其后代。

这对我来说是个问题,因为我尝试实现的视觉效果使用纯 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;
}
);

最佳答案

var BaseView = Backbone.View.extend({

el: $('body'),

initialize: function() {
// bind to the namespaced (for easier unbinding) event
// in jQuery 1.7+ use .on(...)
$(window).bind("resize.app", _.bind(this.resize, this));
},

remove: function() {
// unbind the namespaced event (to prevent accidentally unbinding some
// other resize events from other code in your app
// in jQuery 1.7+ use .off(...)
$(window).unbind("resize.app");

// don't forget to call the original remove() function
Backbone.View.prototype.remove.call(this);
// could also be written as:
// this.constructor.__super__.remove.call(this);
}, ...

不要忘记在 View 上调用remove() 函数。切勿将 View 替换为另一个 View 。

关于javascript - 如何使用 Backbone 将调整大小事件添加到 View 中的窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com