我写了以下代码:
if (OS_ANDROID) {
function showDialog() {
// Android logic
}
function closeDialog() {
// Android logic
}
}
if (OS_IOS) {
function showDialog() {
// iOS logic
}
function closeDialog() {
// iOS logic
}
}
出于某种原因,当我在Android上运行时,它会执行iOS代码。因此,当我查看资源目录中生成的文件时,我发现生成的代码只删除了if (OS_ANDROID)
和if (OS_IOS)
块,并在文件中留下了代码(iOS和Android)。
目前我正在运行模拟器,但我猜它应该可以正常工作。
答案 0 :(得分:3)
您遇到的 Titanium 问题,而不是您在此处所做的 JavaScript 编程错误,&此错误的解决方案称为 JavaScript's Function Hoisting
您不能简单地在 if-else 条件中声明函数,因为 if-else 是块& 块不包含函数声明。
这就是 Titanium 资源文件显示这两种方法的原因,因为不允许在 if-else 中声明方法,如果这样做,那么将被视为在全球范围内或更准确地在 if-else的父范围内。
因此,您可以使代码像这样工作:
function showDialog() {
if (OS_IOS) {
// ios logic
} else if (OS_ANDROID) {
// android logic
}
}
function closeDialog() {
if (OS_IOS) {
// ios logic
} else if (OS_ANDROID) {
// android logic
}
}