0

我无法在潮汐SDK 应用程序中从 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)不显示任何内容。

另一方面,Ruby 函数可以被 JavaScript 看到。因此,如果 ruby​​_function 是一个 ruby​​ 函数,则在 JavaScript 中 alert( ruby​​_function() ) 有效。

那么,JavaScript 怎样才能看到 ruby​​ 变量呢?有什么建议么?

4

1 回答 1

2

这在 1.2 版本中不起作用。

您需要将红宝石放在包含文件中,而不是内联。

然后它按预期工作。

在资源文件夹中: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 SDKs and more recent标题下查找信息。

于 2012-09-10T19:17:44.130 回答