0
我想爲我的dojox.mobile應用程序創建自定義ListItem小部件。它工作,如果我在我的HTML代碼中使用它,但它會引發TypeError,如果我嘗試以編程方式使用它。dojox.mobile:自定義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代碼中使用該自定義列表項是這樣的:
<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"});
有人知道我是什麼嗎?唱?
在此先感謝您的幫助!
正如@edurocher所說,你不應該再使用全局風格的實例。如果你改用'require([「myapp/LabeledInputListItem」],函數(LabeledInputListItem){new LabeledInputListItem({placeholder:「placeholder」});});'?請注意,該類應該在'myapp/LabeledInputListItem.js'中。 –