gpt4 book ai didi

javascript - Backbone Marionette : can I supply options to a collectionView's emptyView?

转载 作者:行者123 更新时间:2023-11-29 15:42:24 28 4
gpt4 key购买 nike

场景是这样的:我有一个 collectionView在几个地方使用。我将一些选项传递到 View 中以更改某些显示方面(主要是措辞),因为行为在任何地方都完全相同。

我真的很想将此自定义扩展到 emptyView ,但我找不到这样做的方法。似乎没有提及 collectionViewemptyView 上,我似乎也无法访问 emptyView来自 collectionView , 在定义之外。

基本上,我希望能够做这样的事情:

var noItemsView = Backbone.Marionette.ItemView.extend({
tagName: "li",
className: "no-results",
template: Handlebars.compile(noResultsTemplate),
}),

leftToggleListView = Backbone.Marionette.CollectionView.extend({
tagName: "ul",
className: "left-toggle-view-list",
emptyView: noItemsView,

initialize: function() {
this.emptyView.model.set("name": "some custom name");
}
});

然后有 noItemsView能够呈现 {{ name }}在其模板中。

除了修改 Marionette 之外,还有什么办法可以做到这一点吗?

最佳答案

在collectionView中你可以使用buildItemView,这个函数也会在构建emptyView的时候被调用

我在 jsFiddle 中做了一个小演示 http://jsfiddle.net/rayweb_on/TN34P/

var leftToggleListView = Backbone.Marionette.CollectionView.extend({
tagName: "ul",
className: "left-toggle-view-list",
emptyView: noItemsView,
ValuethatMakesSense : "I do!",
buildItemView: function(item, ItemViewType, itemViewOptions){
var options = _.extend({model: item}, itemViewOptions);
var name = this.ValuethatMakesSense;
var view = new ItemViewType({name : name});
return view;
}
});

并且在项目 View 的初始化函数中,您可以读取传递的选项。

var noItemsView = Backbone.Marionette.ItemView.extend({
initialize : function (options) {
var name = this.options.name;
console.log(name);
},

tagName: "li",
className: "no-results",
template: "#noresults"
});

我在 collectionView 中使用一个属性,然后读取它/将它传递给 buildItemView 中的空 View ,只是为了测试 buildItemView 函数的功能,您可以在那里进行适当的逻辑检查和验证。

关于javascript - Backbone Marionette : can I supply options to a collectionView's emptyView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17238539/

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