backbone.js 我如何设置一个属性,特别是在一个 puppet 集合视图的最后一个子视图?

gzjq41n4  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(93)

我有一个带有儿童视图的 puppet CollectionView

const BreadcrumbListView = Marionette.CollectionView.extend({
...
childView: BreadcrumbView,
...
})

const BreadcrumbView = Marionette.View.extend({...})

字符串
我想为集合视图中的最后一个子视图设置aria-current HTML属性。如何实现?
我试着在初始化CollectionView之前设置它,像这样:

detailCollection = new Backbone.Collection(models);
detailCollection.last().set('aria-current', 'page');
var breadcrumbView = views.BreadcrumbListView({
            collection: detailCollection,
        });


我还尝试在CollectionView中使用onRender方法:

const BreadcrumbListView = Marionette.CollectionView.extend({
...
onRender: function () {
            const lastChildView = this.children.last();
            lastChildView.model.set('aria-current', 'page');
        }
...
})


但在这两种情况下,HTML属性都不会显示。

o75abkj4

o75abkj41#

把这个弄出来。
我可以在示例化CollectionView之前在集合上设置一个属性,如下所示:
detailCollection.last().set('ariaCurrentPage', true);
您可能还可以更改底层模型数据来实现这一点。
然后在设置子视图的属性时,我可以通过options.models检查该属性:

const BreadcrumbView = Marionette.View.extend({
...
    attributes: function () {
        let attributes = {
            ...
        };
        if (this.options.model.get('ariaCurrentPage')) {
            attributes['aria-current'] = 'page';
        }
        return attributes;
    },
...
})

字符串

相关问题