我无法在tideSDK应用程序中访问JavaScript中的ruby变量。我正在使用的SDK版本是1.2.0.RC4的当前最新版本。这是一个基本的例子:
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
<style type="text/css">
body {background: #fff;}
</style>
</head>
<body>
<h1>Hello World</h1>
<script type="text/python">
helloP = "Hello from Python!";
</script>
<script type="text/ruby">
$helloR = "Hello from Ruby!";
</script>
<script type="text/php">
$helloPHP = "Hello from PHP!";
</script>
<script type="text/javascript">
alert("Hello from JavaScript!");
alert(helloP);
alert(helloPHP);
alert(helloR);
</script>
</body>
</html>
在这个例子中,我已经声明并赋值给python,PHP和ruby变量。 JavaScript alert()函数适用于python和PHP变量,但不适用于ruby变量。所以,提醒(helloP);和警报(helloPHP);工作并显示带有这些变量内容的弹出对话框,但不显示任何警告(helloR)。
另一方面,JavaScript可以看到ruby函数。因此,如果ruby_function是ruby函数,则在JavaScript警报(ruby_function())中工作。
那么,JavaScript如何看待ruby变量?有什么建议吗?
答案 0 :(得分:2)
这在1.2版本中不起作用。
你需要在包含文件中使用ruby,而不是内联。
然后按预期工作。
在Resources文件夹中:index.html
<html>
<head>
<script>
Titanium.include("ruby.rb");
</script>
</head>
<body style="background-color:#ccc;margin:0">
</body>
</html>
<script>
console.log(window.crim);
console.log(crim);
alert(crim.foo);
</script>
资源文件夹中的:ruby.rb
window.crim = {
'foo' => 'bar'
}
请参阅https://wiki.appcelerator.org/display/guides/Using+Titanium+Desktop+with+Ruby - 查找标题 Titanium Desktop 1.2.0.RC1 SDK及更新版下的信息。