0

我有一个无法正常工作的自定义小部件。它正在被实例化,但它不会调用该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's 和一个dojox.mobile.button.

更新:

下面是实例化代码:

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

    var att = new AttributeInspector({});

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

});
4

1 回答 1

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>
于 2013-04-11T16:42:03.513 回答