【问题标题】:Dojo + Rails 3.2.8 + CoffeeScriptDojo + Rails 3.2.8 + CoffeeScript
【发布时间】:2012-09-05 16:33:12
【问题描述】:

我正在尝试在 Rails 3.2.8 Web 应用程序中使用 Dojo Toolkit 1.8 而不是 JQuery,主要是因为缺少基于 JQuery 的完整且视觉上统一的小部件。遵循以下步骤:

  • 将 dojo、dijit 和 dojox 目录解压到 app/assets/javascripts 中
  • 将 application.js 中的 //= require_tree . 更改为 //= require_directory .
  • 编辑的应用程序布局(还不是不显眼...只是为了测试效果)

视图/布局/application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>Dojo</title>
  <%= stylesheet_link_tag 'application' %>
  <%= javascript_include_tag 'application' %>
  <%= stylesheet_link_tag '/assets/dijit/themes/claro/claro.css' %>
  <%= javascript_include_tag "dojo/dojo", :'data-dojo-config' => 'async: true' %>
  <%= csrf_meta_tags %>
</head>
<body class='claro'>
  <%= yield %>
  <script>
    require(["dojo/parser", "dojo/ready"], function(parser, ready) {
      ready(function() {
        parser.parse();
      });
    });
  </script>
</body>
</html>
  • 为 index 操作创建了一个名为 home 的控制器和一个模板

views/home/index.html.erb

<input type="text" required="true" name="bday" id="bday" data-dojo-type="dijit/form/DateTextBox" value=<%= localize(Date.today - 21.days) %> />
<button id="button1" type="button" data-dojo-type="dijit/form/Button">Button 1</button>

好的,Dijit 很好用!但是,当我尝试将一些 dojo 代码放入 CoffeeScript 文件 (assets/javascripts/home.js.coffee) 时,Firebug 控制台上会出现 "ReferenceError: require is not defined" 错误消息。示例代码:

require ["dojo/domReady!"], () ->
  alert('ok')

如果我在上面的代码之前添加//= require dojo/dojo,它会运行,但会加载所有 dojo 模块(不仅仅是 domReady),并且在 Firebug 上引发“错误:defineAlreadyDefined”。

有没有什么方法可以调用 require 函数而无需重新加载整个 dojo.js 甚至访问 dojo 全局变量?

谢谢

【问题讨论】:

    标签: ruby-on-rails dojo coffeescript


    【解决方案1】:

    这是我的失误,我交换了 javascripts 包含顺序。正确的是:

      <%= stylesheet_link_tag '/assets/dijit/themes/claro/claro.css' %>
      <%= javascript_include_tag "dojo/dojo", :'data-dojo-config' => 'async: true' %>
      <%= stylesheet_link_tag 'application' %>
      <%= javascript_include_tag 'application' %>
    

    当我尝试在 coffeescript 文件中引入模块时,Dojo 尚未加载。

    感谢您的关注。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 2012-08-16
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多