在 <script>
中使用 javascript 有什么区别?在 View 中标记并使用 application.js
文件?
我需要像这样直接在 JavaScript 中传递变量:
<% @posts.each do |post| %>
//OTHER CODE etc etc...
<script type="text/javascript">
jQuery(function() {
$('#myDiv_<%= post.id %>').scroll(function() {
var url;
url = $('.myClass_<%= post.id %> .next_page').attr('href');
if (url && $(this).scrollTop() + $(this).innerHeight() >= this.scrollHeight) {
$('.myClass_<%= post.id %>').text('Fetching more posts...');
return $.getScript(url);
}
});
return $(window).scroll();
});
</script>
<% end %>
我把我的<script>
在每个迭代器内,因此我可以访问具有唯一 id 的单个变量来设置 id 和类。
在每个迭代器的 View 中使用此代码是否安全?使用 getScript(Url)
安全吗?像这样?有没有另一种方法可以将这些变量传递给我的 application.js
?
最佳答案
您通常不想这样做。这里是模板内的 ERB 内的 Ruby、JavaScript 内的 HTML 内的,这实在是太多层了。
最好尝试将其表达为某个字段上的 data
属性,然后您的 application.js
稍后可以使用这些变量。这样可以避免每次渲染页面时转储多行 95% 相同的 JavaScript。
例如:
var $postId = $('#lastDiv').data('postId');
您可以在 HTML 中的某个位置放置 data-postId='...'
。这意味着您的 JavaScript 不会改变,它只是适应使用页面本身上的任何内容。
关于 'script' 标签内的 JavaScript 与 'application.js' 之间的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47150831/