gpt4 book ai didi

javascript - 道场 : ComboBox is not a constructor

转载 作者:行者123 更新时间:2023-11-30 17:30:09 25 4
gpt4 key购买 nike

我正在编写一个使用 dojo Toolkit 的 JavaScript 应用程序。我在 dojo 文件夹中创建了一个名为“md”(我的 Dojo)的文件夹。 myownclass.jsmyComboBox.js 中有 2 个 .js 文件。 myownclass.js 用于通过向 sqlaccess.php 发出 dojo 请求(有效)从 SQLite 数据库中检索信息。 firebug 告诉我请求是正确的。但是该函数不想转到函数 prepare_str(str) 并将字符串推送到 Array data : [].

数据:[],

constructor : function( ){
this.getdata();
},

//gets Data
getdata : function(){
xhr("sqlaccess.php?order=0").then(function(text){
this.prepare_str(text.toString().split(";"));});
return this.data;
},
//push Data to Array
prepare_str : function(str){
alert(str);
for(var index = 0; index < str.length; index++)
{
data.push({name:str[index], id: index});
}
//get
},

您可以在以下位置查看完整代码:http://pastebin.com/aKUrLmcH

另一个错误出现在 myComboBox.js 中,它告诉我 new ComboBox() 不是构造函数

MyMemory : null,
comboBox : null,
//keyhandle : null,

oldval : "",
constructor: function(){
this.MyMemory = new myownclass();
var stateStore = new Memory({data : this.MyMemory.data});
comboBox = new ComboBox({
id: "stateSelect",
name: "state",
value: "",
store: stateStore,
searchAttr: "name"
}, "stateSelect");
var handle = on(dom.byId("stateSelect"),"keyup", this.keyupfoo);
},

完整代码可在此处阅读:http://pastebin.com/hi8nkymf

谁能看到我犯的错误?

感谢帮助

最佳答案

您的第一个问题是未调用 prepare_str() 函数是由于范围问题。当您依赖回调时,this 将不再引用您的类。要解决这个问题,您可以使用 hitch() dojo/_base/lang模块的方法,例如:

xhr("sqlaccess.php?order=0").then(lang.hitch(this, function(text){
this.prepare_str(text.toString().split(";"));
}));

这确保 xhr() 函数的回调将使用当前对象作为作用域,因此 this 将引用您的类(其中包含 prepare_str() 函数)。


我不确定为什么您的组合框不起作用。确保模块被正确加载,并注意在 myComboBox 的构造函数中,您不应忘记使用 this

this.comboBox = new ComboBox({
id: "stateSelect",
name: "state",
value: "",
store: stateStore,
searchAttr: "name"
}, "stateSelect");

如果您需要进一步帮助解决您的构造函数问题,您应该尝试制作错误所在的控制台的屏幕截图,或者至少提供错误的完整堆栈跟踪(我假设它位于 new ComboBox() 语句,但我想确定一下。

关于javascript - 道场 : ComboBox is not a constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23289424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com