Backbone.js 更新主干木偶项目视图的某些部分
我是Backbone.js和Backbone.marionete的新手,在尝试遵循应用程序的最佳模式时遇到了一些问题 我正在创建一个由PhoneGap封装的移动web应用程序。我有一个通用的布局(类似于Facebook):2个侧栏,一个主标题和一个内容区域,所有视图都在其中加载 我的主干网初始化代码。木偶应用程序是:Backbone.js 更新主干木偶项目视图的某些部分,backbone.js,marionette,Backbone.js,Marionette,我是Backbone.js和Backbone.marionete的新手,在尝试遵循应用程序的最佳模式时遇到了一些问题 我正在创建一个由PhoneGap封装的移动web应用程序。我有一个通用的布局(类似于Facebook):2个侧栏,一个主标题和一个内容区域,所有视图都在其中加载 我的主干网初始化代码。木偶应用程序是: var App = new Backbone.Marionette.Application(); App.addRegions({ leftRegion: '#left-
var App = new Backbone.Marionette.Application();
App.addRegions({
leftRegion: '#left-drawer',
rightRegion: '#right-drawer',
headerRegion: '#header',
contentRegion: '#content',
mainRegion: '#main'
});
这是我将附加内容的区域。稍后,在初始化路由器之后,我有下一个:
App.headerRegion.show(App.Views.Header);
App.leftRegion.show(App.Views.LeftSidebar);
App.rightRegion.show(App.Views.RightSidebar);
这将把我的内容加载到这个新区域。问题发生在HeaderView中。“我的标题”视图的模板:
<button id="open-left"><img src="assets/img/icons/menu-icon.png"></button>
<h1 class="title logo"><img src="assets/img/logo.png" height="28px" width="167px"></h1>
<button id="open-right"><img src="assets/img/icons/chat-icon.png"></button>
在应用程序的某些部分,我不想使用标题中的
。应用程序的某些页面需要将其更新为文本,例如设置
。我的问题是,最好的方法是什么?或者更好的办法是什么?现在我不知道从哪里开始,我脑子里唯一的想法就是创造
使用另一个模板创建新的ItemView
提前谢谢 木偶为这种情况提供了一个有用的函数getTemplate,您可以使用这个函数代替模板:模板声明,如下所示
SampleView = Backbone.Marionette.ItemView.extend({
getTemplate: function(){
if (this.model.get("foo"))
return "#sample-template";
else
return "#a-different-template";
},
});
因此,在yur应用程序中,如果需要不同的模板而不需要图像,只需更改视图或模型上的一个值,该值可用于此函数,以便在调用render时对模板进行更改。因此,如果我没有弄错,我的ItemView应该使用一个模型。然后,将其附加到区域。当我想更改名称时,我应该编辑模型,ItemView将被重新呈现,因为它将使用
getTemplate
来检测更改。是这样吗?非常感谢。使用模型是可选的,您可以只使用视图的一个新属性,根据场景更改属性值并调用render,一旦调用render,将调用getTemplate,它将检查属性值,或者您也可以使用模型执行此操作。但我认为关键是使用getTemplate函数。
SampleView = Backbone.Marionette.ItemView.extend({
getTemplate: function(){
if (this.model.get("foo"))
return "#sample-template";
else
return "#a-different-template";
},
});