[英]Change Backbone view template on window resize
我想更改窗口调整大小视图的模板,以使其响应。 重新加载页面时此方法工作正常,但我无法动态更新模板。 根据文档,我使用它来设置页面加载时的模板:
getTemplate: function() {
if ($(window).width() > 1024){
this.desktopLayout = true;
return '#MenuView';
} else {
this.desktopLayout = false;
return '#MenuViewTablet';
}
},
当您导航到页面时,此方法工作正常,但是在“调整大小”上调用该函数时,它不会更新模板。
最终的答案是使用Backbone的listenTo函数来监听窗口调整大小事件 ,在该事件回调中进行更改,然后确保调用render来重新渲染视图 。
使用Backbone更改应用程序的HTML结构时,最关键的步骤和最常见的错误 是不调用render 。 如果在骨干网顶部使用“木偶”之类的东西,则在某些情况下,进行此类更改时,视图将自动重新呈现。
在您的ItemView
:
onShow : function () {
$(window).on("resize.myNamespace", _.throttle(_.bind(this.render, this), 50));
},
onClose : function () {
$(window).off("resize.myNamespace");
}
this
引用以进行渲染调用 getTemplate
) onShow
事件,以便仅在将视图插入DOM后进行绑定 onClose
事件中清除侦听器以防止以后出错,在名称空间中清除侦听器以防止与其他代码冲突。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.