2 votes

Widgets dans la dgrid Dojo OnDemandList

J'essaie de faire quelque chose de similaire à cette question mais en utilisant une OnDemandList au lieu d'une OnDemandGrid.

Voici ce que j'ai pour l'instant

define([
    "dojo/_base/declare",
    "dijit/_WidgetBase",
    "dijit/_TemplatedMixin",
    "dijit/_WidgetsInTemplateMixin",
    "dgrid/OnDemandList",
    "widget/CategoryItem",
    "dojo/dom-construct",
    "dojo/text!./templates/category-list.html"
], function(declare, _Widget, _TemplatedMixin, _WidgetsInTemplateMixin, OnDemandList, CategoryItem, domConstruct, template) {
    var CatList = declare([OnDemandList]);
    return declare([_Widget, _TemplatedMixin, _WidgetsInTemplateMixin], {
        templateString: template,
        baseClass: "category-list",

        postCreate: function() {
            this.inherited(arguments);

            // Create OnDemandList, place in div defined in template.
            var cat1 = this.cat1 = new CatList({
                store: this.store,
                renderRow: this.renderItem
            }, this.categoriesLevel0);

        },

        renderItem: function(item) {
            return new CategoryItem({
                title: item.title
            });
        }
    });
});

Le problème est que ma fonction renderItems doit retourner un dom contenant mon widget personnalisé. Dans l'état actuel des choses, j'obtiens cette erreur Error on domReady callback: Error: NotFoundError: DOM Exception 8

2voto

zclark Points 803

Oui, il faut absolument qu'il renvoie un dom node à partir de renderRow. En supposant que vous utilisiez _WidgetBase pour CategoryItem, cela devrait fonctionner comme suit :

renderItem: function(item) {
    var category = new CategoryItem({
        title: item.title
    });
    return category.domNode;
}

L'exemple ici : https://github.com/SitePen/dgrid/wiki/OnDemandList-and-OnDemandGrid fait à peu près la même chose, sauf qu'elle utilise put-selector, qui consiste simplement à construire une div, à y attacher le widget et à renvoyer la nouvelle div.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X