我想为我的 dojox.mobile 应用程序创建一个自定义 ListItem 小部件。如果我在我的 HTML 代码中使用它,它可以工作,但如果我尝试以编程方式使用它,它会抛出一个 TypeError。
这是我的自定义 ListItem 的 JS 代码:
define([
"dojo/_base/declare",
"dojo/dom-construct",
"dojox/mobile/ListItem"], function(declare, domConstruct, ListItem){
var LabeledInputListItem = declare("myapp.LabeledInputListItem", ListItem, {
    labelText: "",
    placeholder: "",
    value: "",
    _setItemLabelAttr: function(val) {
        this.labelText = val;
        this.qDescSpan.innerHTML = val;
    },
    _setPlaceholderAttr: function(val) {
        this.placeholder = val;
    },
    _setValueAttr: function(val) {
        this.value = val;
    },
    startup: function(){
        if(this._started){ return; }
    },
    constructor: function(params) {
        this.placeholder = params.placeholder;
        this.labelText = params.labelText;
        this.valu = params.value;
    },
    buildRendering: function(){
        this.inherited(arguments);
        this.qDescDiv = domConstruct.create("div", {className: "tableItemDescription", id: "asd"}, this.labelNode, "before");
        this.qDescSpan = domConstruct.create("span", null, this.qDescDiv, "first");
        this.qInputDiv = domConstruct.create("div", {className: "tableItemInput"}, this.qDescDiv, "after");
        this.qInputText = domConstruct.create("input", {className: "mblTextBox sessionTextbox", placeholder: this.placeholder, value: this.value}, this.qInputDiv, "first");
        console.log(this.labelText, this.placeholder, this.value);
    },
});
return LabeledInputListItem;  });
我可以在我的 html 代码中使用这个自定义 ListItem,如下所示:
<li data-dojo-type="myapp/LabeledInputListItem" data-dojo-props="itemLabel: 'asdasd', placeholder: 'placeholder', value: 'value'"></li>
但是,如果我尝试以编程方式创建自定义 ListItem,则会导致以下错误:
TypeError: myapp.LabeledInputListItem is not a constructor
var childWidget = new myapp.LabeledInputListItem({placeholder: "placeholder"});
有人知道我错过了什么吗?
在此先感谢您的帮助!