我一直在关注几个 railscasts,目前有一个使用 will_paginate 的带有无尽页面的产品列表。我想实现 railscast #240 以在结果中添加实时搜索,但似乎存在一些逻辑冲突,我不确定如何纠正。
简单来说,index.js.erb 里面的无尽页面需要使用 append 在当前产品列表下方添加更多产品:
$('#products')。append ('<%= j 渲染(@products) %>');
然而,实时搜索实现需要用搜索结果中的新产品替换当前的产品列表:
$('#products')。html ('<%= j 渲染(@products) %>');
这是完整的块:
$('#products').html('<%= j render(@products) %>'); // live search
$('#products').append('<%= j render(@products) %>'); // endless page
<% if @products.next_page %>
$('.pagination').replaceWith('<%= j will_paginate(@products) %>');
<% else %>
$('.pagination').remove();
<% end %>
html() 和 append() 都非常适合它们各自的用途,如果我注释掉其他作品,但如果我不注释掉其中一个,它就会变得非常不稳定。
我该如何设置它,如果用户在搜索框中输入它会触发 html(),如果用户滚动它会触发 append()?有什么方法可以确定哪个事件触发了 index.js.erb 调用?