gpt4 book ai didi

backbone.js - 有没有办法使用 RequireJS 动态更改 Marionette ItemView 模板?

转载 作者:行者123 更新时间:2023-12-04 08:59:41 24 4
gpt4 key购买 nike

我正在尝试在 Marionette CollectionView 中动态操作 itemViews。这些集合具有相同的模型,但我在模型中定义了 templateName 参数。

问题是,我可以通过这个参数操作 ItemView 模板吗?

项目 View :

define(['text!templates/ComponentItemViewTemplate.html','models/ComponentModel'], function (template, model) {
var ItemView = Backbone.Marionette.ItemView.extend({
template: _.template(template),
model: model
});

return ItemView;
});

收藏 View :
define(['views/ComponentItemView', 'views/LoadingView'], function(ItemView, LoadingView) {
var ComponentListView = Backbone.Marionette.CollectionView.extend({
emptyView : LoadingView,
id: "component-list",
itemView: ItemView,
events: {
'click .title span' : 'show'
},
appendHtml: function(collectionView, itemView, index){//i would like to render different templates, for different models.
itemView.$el.draggable({ helper: "clone", cancel: ".component .title span", connectToSortable: ".ui-sortable" });
collectionView.$el.append(itemView.el);
},
show: function(r) {
var target = $(r.target);
if( target.parent().hasClass('open') ){
target.parent().removeClass('open');
target.parent().next().slideDown('fast');
}else{
target.parent().addClass('open');
target.parent().next().slideUp('fast');
}
}
});

return ComponentListView;
});

谢谢!

最佳答案

您可以覆盖 getTemplate 函数并在那里编写自定义逻辑。 Marionette documentation recommends以下选项:

MyView = Backbone.Marionette.ItemView.extend({
getTemplate: function(){
if (this.model.get("foo")){
return "#some-template";
} else {
return "#a-different-template";
}
}
});

关于backbone.js - 有没有办法使用 RequireJS 动态更改 Marionette ItemView 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15536134/

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