Dojo + Rails 3.2.8 + CoffeeScript
我正在尝试在Rails 3.2.8 Web应用程序中使用Dojo Toolkit 1.8而不是JQuery,主要是因为缺少基于JQuery的完整且可视化的统一小部件。 遵循以下步骤:
- 将dojo,dijit和dojox目录解压缩到app / assets / javascripts中
- 在application.js
//= require_tree .
更改//= require_tree .
至//= require_directory .
- 编辑的应用程序布局(不是不引人注目的……只是为了测试的效果)
视图/布局/ application.html.erb
Dojo 'async: true' %> require(["dojo/parser", "dojo/ready"], function(parser, ready) { ready(function() { parser.parse(); }); });
- 创建了一个名为home的控制器和一个索引操作的模板
意见/家/ index.html.erb
<input type="text" required="true" name="bday" id="bday" data-dojo-type="dijit/form/DateTextBox" value= />
好的,Dijit工作得很好! 但是当我尝试在CoffeeScript文件(assets / javascripts / home.js.coffee)中放入一些dojo代码时,Firebug控制台上会出现“ReferenceError:require is not defined”错误消息。 示例代码:
require ["dojo/domReady!"], () -> alert('ok')
如果我在上面的代码之前放置//= require dojo/dojo
,它会运行,但是所有dojo模块都被加载(不仅仅是domReady),并且在Firebug上引发了“Error:defineAlreadyDefined”。
有没有办法调用require函数而不必重新加载整个dojo.js甚至访问dojo全局变量?
谢谢
这是我的一个漏洞,我交换了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。
感谢您的关注。
- Rails 3.1。 如何防止Rails使用CoffeScript?
- Rails 3.1 Ajax问题
- 清单中的ExecJS :: RuntimeError索引错误
- 条带集成 – 将attr值动态添加到hidden_field中
- 如何在Rails 3.1 for CoffeeScript中使用选项“–bare”?
- 如何配置Rails 3.2 + / 4以生成.js而不是.js.coffee默认情况下?
- Rails 4 + ReactJS:“SyntaxError:隐式对象中不能有隐式值”
- 使用coffeescript延迟(去抖)ajax请求
- 在rails资产管道中的js.coffee文件中使用erb时出错