【问题标题】:TideSDK | Accessing Ruby Variables in JavaScript潮汐SDK |在 JavaScript 中访问 Ruby 变量
【发布时间】:2012-09-10 12:59:17
【问题描述】:

我无法在潮汐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);工作并显示包含这些变量内容的弹出对话框,但 alert(helloR) 不显示任何内容。

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

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

【问题讨论】:

  • 在 Win7x64 SDK 1.2.0RC6d 上检查了这一点 - 可以确认这一点。 helloP 和 HelloPHP 变量都成为了窗口对象的属性,而 helloR 变量没有。在我看来像一些克罗虫。

标签: tidesdk


【解决方案1】:

这在 1.2 版本中不起作用。

您需要将 ruby​​ 放在包含文件中,而不是内联。

然后它按预期工作。

在资源文件夹中: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 和更新版本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-22
    • 2013-09-17
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多