首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dojox.mobile:自定义ListItem小部件:"...不是构造函数“

dojox.mobile:自定义ListItem小部件:"...不是构造函数“
EN

Stack Overflow用户
提问于 2013-02-01 22:09:15
回答 1查看 698关注 0票数 0

我想为我的dojox.mobile应用程序创建一个自定义的ListItem小部件。如果我在HTML代码中使用它,它可以工作,但是如果我尝试以编程方式使用它,它会抛出一个TypeError。

这是我的自定义ListItem的JS代码:

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
<li data-dojo-type="myapp/LabeledInputListItem" data-dojo-props="itemLabel: 'asdasd', placeholder: 'placeholder', value: 'value'"></li>

但是,如果我尝试以编程方式创建自定义ListItem,则会导致以下错误:

代码语言:javascript
复制
TypeError: myapp.LabeledInputListItem is not a constructor

var childWidget = new myapp.LabeledInputListItem({placeholder: "placeholder"});

有人知道我错过了什么吗?

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2013-02-06 15:25:58

我能想到的唯一(明显的)原因是你不需要这个模块?顺便说一句,Dojo现在正朝着“无全局变量”的方向发展,所以最好不要给你的类一个显式的id,而是使用AMD模块的值,而不是全局myapp.LabeledInputListItem。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14648117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档