dojo自定义小部件不会调用postCreate

时间:2013-04-11 15:15:19

标签: javascript widget dojo amd

我有一个无法正常工作的自定义窗口小部件。它正在实例化,但不会调用postCreate函数。我没有收到任何错误消息。

我已从窗口小部件中删除了任何额外的代码以用于测试目的,以下是生成的代码:

define(["dojo/_base/declare",
        "dojo/_base/lang",
        "dijit/_WidgetBase",
        "dijit/_TemplatedMixin",
        "dijit/_WidgetsInTemplateMixin",
        "dojox/mobile/Button",
        "dojo/text!pgonline/widgets/AttributeInspector/templates/AttributeInspector.html"],

    function(declare,
             lang,
             _WidgetBase,
             _TemplatedMixin,
             _WidgetsInTemplateMixin,
             Button,
             template) {

        return declare("AttributeInspector2", [_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {

            templateString : template,
            baseClass : "AttributeInspector2",
            postCreate : function() {
                dojo.connect(this, "onBeforeTransitionIn", lang.hitch(this, this.onPageLoad));
            },

            onPageLoad : function() {
            }
        });
    });

我可以告诉它正在实例化,因为当我在Chrome中调试时,我可以在行上设置一个断点:templateString : template它将在该断点上停止,但它不会在代码的断点处停止在postCreate函数内。模板本身是一个简单的HTML文件,其中包含多个div和一个dojox.mobile.button

更新

这是实例化代码:

require(["pgonline/widgets/AttributeInspector2"], function(AttributeInspector) {

    var att = new AttributeInspector({});

att.placeAt("attributeInspector");
att.startup();

});

1 个答案:

答案 0 :(得分:2)

这可能不合适,但根据您的fiddle,控制台中的错误为Uncaught Error: Invalid template

您的模板如下所示:

<div>
    <button data-dojo-attach-point='prevButton' data-dojo-type='dojox.mobile.Button'></button>
    <button data-dojo-attach-point='nextButton'></button>
</div>
<div data-dojo-attach-point='attributes'></div>

Dijit要求模板具有单个根节点 - 所以作为修复,只需将包含div添加到模板

<div>
    <div>
        <button data-dojo-attach-point='prevButton' data-dojo-type='dojox.mobile.Button'></button>
        <button data-dojo-attach-point='nextButton'></button>
    </div>
    <div data-dojo-attach-point='attributes'></div>
</div>