1

我有一个模型的咖啡脚本文件,entree它只是在另一个咖啡脚本文件中实例化一个类:

jQuery(document).ready ->
  ch = new CepageHandling
  ch.handleKeyPress()

handlePress函数捕获keyup控件上的事件。

我有另一个模型vin,我想启用相同的功能。我很惊讶我不需要做任何事情(它已经有相同的 html),它已经在工作了,即使vin模型的咖啡脚本完全是空的。我假设entree即使我不在此页面上,创建的 javascript 也会被调用。

我已经看到scss文件的相同行为,如果描述符匹配,为一个模型定义的样式将应用于其他模型。有人可以解释(或指向一些文章)如果这是资产未隔离在轨道中的正常行为吗?我真的很难理解它是如何工作的。

4

2 回答 2

1

默认清单文件(application.js等)require_tree .将加载所有页面上的所有文件,在生产中将它们全部连接在一起等。如果您希望隔离事物,您需要在ready处理程序中进行测试以跳过此代码在某些情况下,或者您将需要更多清单(application.js例如不使用)来存储每页的代码。我建议你仔细阅读资产管道 Rails 指南的每一个字……必读!

于 2012-06-20T17:23:31.747 回答
1

这是因为清单文件application.js发生的,更准确地说是在这行代码中:

//= require_tree .

这意味着/assets/javascripts/文件夹中包含的所有.js文件都将加载到您的视图中。 由于您的entree.js已经加载并使用JQuery 文档就绪功能,它会在您的所有视图中搜索文件的规则。 这意味着包含此ch元素的所有页面都将获得相同的行为。

于 2012-06-20T17:23:46.007 回答