我有一个Ruby on Rails项目,其中我使用了一个第三方库(editablegrid)。我将文件放在vendor/assets/javascripts中,并将该库包含在布局文件中,以供需要它的视图使用:
<!DOCTYPE html>
<html>
<head>
<title>Mcf</title>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'dynamic_collections' %>
<%= csrf_meta_tags %>
<%= javascript_include_tag "editablegrid" %>
<%= javascript_include_tag "editablegrid_editors" %>
<%= javascript_include_tag "editablegrid_renderers" %>
<%= javascript_include_tag "editablegrid_utils" %>
<%= javascript_include_tag "editablegrid_validators" %>
</head>
<body>
<%= yield %>
</body>
生成的html总是有用于editablegrid的<script>标签,但是浏览器并不总是加载它。js文件总是可以从javascript_include_tag生成的urls加载。
我在js加载与否中注意到的模式是,如果我单击指向页面的链接,js将不会加载,除非js已经在相同的选项卡上加载了一次。在地址栏中输入页面的url或重新搜索页面将加载js。我在Chromium上测试了这个模式。
在Chromium的元素开发工具中,只有editablegrid javascripts没有显示,所有其他的js文件似乎都被加载了。
版本:
Ruby 2.2.3p173 (2015-08-18 revision 51636)
Rails 4.2.5
Chromium 47.0.2526.106 Ubuntu 14.04 (64-bit)
Firefox 43.0.4 (Bug is there, didn't test for pattern)发布于 2016-03-24 01:17:53
js应该总是放在HTML文件的末尾。由于您使用的是rails和jquery,因此您可以告诉您的js代码等待页面加载一个:
页面$(
).on(‘页面:加载’,就绪)
并将您的js代码封装在一个“就绪”函数中。
ready = -> ###将代码放在此处
抱歉,这是咖啡格式的js代码...
编辑:浏览示例时,请访问:GitHub Editablegrid page
您可以注意到,您将放置在"ready ->“中的函数将取决于您拥有的输入数据的类型。
下面是一个将可编辑网格插入HTML表的示例(这不是我的示例,而是演示中的示例):
editableGrid = new EditableGrid("DemoGridAttach", { sortIconUp: "up.png", sortIconDown: "down.png"});
// we build and load the metadata in Javascript
editableGrid.load({ metadata: [
{ name: "name", datatype: "string", editable: true },
{ name: "firstname", datatype: "string", editable: true },
{ name: "age", datatype: "integer", editable: true },
{ name: "height", datatype: "double(m,2)", editable: true },
{ name: "country", datatype: "string", editable: true, values:
{ 'Europe': { "be" : "Belgium", "fr" : "France", "uk" : "Great-Britain", "nl": "Nederland"},
'America': { "br" : "Brazil", "ca": "Canada", "us" : "USA" },
'Africa': { "ng" : "Nigeria", "za": "South-Africa", "zw" : "Zimbabwe" }
}
},
{ name: "email", datatype: "email", editable: true },
{ name: "freelance", datatype: "boolean", editable: true },
{ name: "lastvisit", datatype: "date", editable: true }
]});
// then we attach to the HTML table and render it
editableGrid.attachToHTMLTable('htmlgrid');
editableGrid.renderGrid();
} `这是要放在ready函数中的函数类型
https://stackoverflow.com/questions/36180321
复制相似问题