在Appcelerator中定义JavaScript类

在Appcelerator中定义JavaScript类,javascript,appcelerator-mobile,Javascript,Appcelerator Mobile,我正在尝试使用Appcelerator Titanium构建一个移动应用程序。这个应用程序会很大,为了便于管理,我想使用JavaScript类。目前,我有一个JavaScript类,其定义如下: function Item() { this.ID = 0; this.initialize = function(id) { this.ID = 1; } this.Submit = function(submitHandle) { submitHandle();

我正在尝试使用Appcelerator Titanium构建一个移动应用程序。这个应用程序会很大,为了便于管理,我想使用JavaScript类。目前,我有一个JavaScript类,其定义如下:

function Item()
{
  this.ID = 0;

  this.initialize = function(id) {
    this.ID = 1;
  }

  this.Submit = function(submitHandle) {
    submitHandle();
  };
}
然后,我使用以下命令调用该类:

alert("building Item");
var i = new Item();
alert("initializing Item");
i.initialize(1);
alert("submitting");
i.Submit(itemSubmitted);

function itemSubmitted() {
  alert("tada!");
}

此时会出现显示“Building item”的警报消息。但是,“初始化项”从未显示。此外,我的项目从未提交。我没有得到一个错误。我做错了什么?

试试这个:不要在你的Item类中使用this.ID=0,试着只使用ID=0

我使用Tianium Mobile SDK 1.7.5将此代码放在一个空白的app.js文件中,并在iPhone模拟器中正常工作。在使用Android 2.1的Android Emulator上,您只会收到最后一个警报。如果我将代码更改为使用调试语句,我可以看到它们全部启动:

Ti.API.info( "building Item");
var i = new Item();
Ti.API.info("initializing Item");
i.initialize(1);
Ti.API.info("submitting");
i.Submit(itemSubmitted);
日志输出:

11-08 08:52:48.520: INFO/TiAPI(1319): (kroll$5: app://app.js) [295,1141] building Item
11-08 08:52:48.530: INFO/TiAPI(1319): (kroll$5: app://app.js) [3,1144] initializing Item
11-08 08:52:48.530: INFO/TiAPI(1319): (kroll$5: app://app.js) [2,1146] submitting
在Tianium中,
alert
函数不会像浏览器中的JavaScript那样暂停执行上下文。因此,当第一个警报打开时,将调用第二个“警报”。可能是在您的代码中,您试图同时打开两个警报,而这在Android上的Tianium Mobile中是无法做到的

我建议的另一件事是将函数设置为变量,以便更容易传递:

var itemSubmitted = function(){
  alert("tada!");
}

查看精彩系列,了解更多信息。

您实际上并不是在呼叫submitHandle
this.Submit=函数(submitHandle){submitHandle();}这就是我的代码的外观。我只是没有把它恰当地纳入问题中。谢谢你指出这一点。糟糕,我一直在用钛做一些开发,我有时看到一些奇怪的东西在用这个。随便什么。如果我想到别的事,我会告诉你的。。。。