我正在尝试在Rails 3.2.8 Web应用程序中使用Dojo Toolkit 1.8而不是JQuery,主要是因为缺少基于JQuery的完整且可视化统一的小部件。遵循以下步骤:
//= 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.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工作得很好!但是当我尝试在CoffeeScript文件(assets / javascripts / home.js.coffee)中放入一些dojo代码时,在Firebug控制台上引发了“ReferenceError:require未定义”错误消息。示例代码:
require ["dojo/domReady!"], () ->
alert('ok')
如果我在上面的代码之前添加//= require dojo/dojo
,它会运行,但是所有的dojo模块都被加载(不仅仅是domReady),并且在Firebug上引发了“Error:defineAlreadyDefined”。
有没有办法调用require函数而不必重新加载整个dojo.js甚至访问dojo全局变量?
由于
答案 0 :(得分:2)
这是我的一个漏洞,我交换了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。
感谢您的关注。