gpt4 book ai didi

javascript - Backbone : Rendering different ItemViews based on model value

转载 作者:行者123 更新时间:2023-12-02 17:24:21 24 4
gpt4 key购买 nike

我设置了一个主干模型,它使用单个项目 View 和模板来显示给最终用户。

但是,我在模型中添加了一个新属性,并且根据这个新属性的值,我想使用正确的模板/itemview。

我的主干代码如下:

InfoWell = Backbone.Model.extend({});

InfoWells = Backbone.Collection.extend({
model : InfoWell
});

InfoWellView = Backbone.Marionette.ItemView.extend({
template : "#template-infowell",
tagName : 'div',
className : 'alert alert-custom',

initialize: function () {
this.$el.prop("id", this.model.get("datetime"));
},
});

InfoWellsView = Backbone.Marionette.CompositeView.extend({
tagName : "div",
id : "info-well-list",
template : "#template-infowells",
itemView : InfoWellView,

});

MainJs.addInitializer(function(options) {
var aInfoWellsView = new InfoWellsView({
collection : options.InfoWells
});
MainJs.InfoWellsContainer.show(aInfoWellsView);
});

var InfoWells = new InfoWells();

所以,在某个地方(在复合 View 中?)我需要单独说一些内容:

if (this.model.get("infotype") === "blog") {
// use different template (#template-blogwell)
}

这可能吗?我可以在我的 itemview 中定义两个模板并在那里选择正确的模板,还是我需要两个 itemview,然后在我的合成 View 中说出要使用哪一个?

谢谢!

最佳答案

Marionette JS 文档 here 对此进行了介绍:

There may be some cases where you need to change the template that is used for a view, based on some simple logic such as the value of a specific attribute in the view's model. To do this, you can provide a getTemplate function on your views and use this to return the template that you need.

重用您的代码,

InfoWellsView = Backbone.Marionette.CompositeView.extend({
tagName : "div",
id : "info-well-list",
template : "#template-infowells",
itemView : InfoWellView,
getTemplate: function () {
if (this.model.get("infotype") === "blog") {
// use different template (#template-blogwell)
}
}
});

关于javascript - Backbone : Rendering different ItemViews based on model value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23628479/

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