2

我正在尝试做与这个问题类似的事情,但使用 OnDemandList 而不是 OnDemandGrid。

这是我到目前为止所拥有的

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
            });
        }
    });
});

问题是我的 renderItems 函数需要以某种方式返回一个包含我的自定义小部件的 dom。现在我收到此错误Error on domReady callback: Error: NotFoundError: DOM Exception 8

4

1 回答 1

2

是的,它肯定需要从 renderRow 返回一个 dom 节点。假设您将 _WidgetBase 用于 CategoryItem 它应该像这样工作:

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

此处的示例:https ://github.com/SitePen/dgrid/wiki/OnDemandList-and-OnDemandGrid做的事情几乎相同,除了它使用 put-selector,它只是构建一个 div,将小部件附加到它和返回新的 div。

于 2013-07-10T22:58:50.040 回答