我想在窗口调整大小时更改视图的模板,以使其响应。这在重新加载页面时工作正常,但我无法动态更新模板。根据我用它来设置页面加载模板的文件:
getTemplate: function() {
if ($(window).width() > 1024){
this.desktopLayout = true;
return '#MenuView';
} else {
this.desktopLayout = false;
return '#MenuViewTablet';
}
},
当您导航到该页面时,此功能正常,但是当调用该功能时,调整大小',它不会更新模板。
答案 0 :(得分:0)
这里的明确答案是使用Backbone的listenTo功能来收听窗口调整大小事件,在该事件回调中进行更改,然后< strong>确保调用渲染以重新渲染视图。
使用Backbone 更改应用程序的HTML结构时,最关键的步骤和最常见的错误不会调用render 。如果您在Backbone之上使用Marionette之类的东西,在某些情况下,您的视图将在进行此类更改时自动重新呈现。
答案 1 :(得分:0)
在ItemView
:
onShow : function () {
$(window).on("resize.myNamespace", _.throttle(_.bind(this.render, this), 50));
},
onClose : function () {
$(window).off("resize.myNamespace");
}
this
渲染调用的参考getTemplate
)onShow
事件,因此只有在将视图插入DOM onClose
事件中的监听器以防止以后出现错误,命名空间以防止与其他代码发生冲突。