【问题标题】:rails3 disable spinner for particular ajax callrails3 禁用特定 ajax 调用的微调器
【发布时间】:2013-05-23 15:19:44
【问题描述】:

我的项目有很多 ajax 链接,我可能会为每个 ajax 请求实现微调器。 我在我的 application.js 中全局使用了 ajaxStart 和 ajaxStop 回调来处理所有 ajax 请求。

我的应用程序.js

$(document).ready(function() {

   $(this).ajaxStart(function(){
     $("#ajax_loader").modal('show');
   })
   .ajaxStop(function(){
     $("#ajax_loader").modal("hide");
   });

});

但有些页面有很多快速的小型 ajax 调用,并且 一些具有 data-spinner = false 属性的 ajax 链接不需要微调器。

我在网上旅行并找到了一些不符合我要求的解决方案(解除绑定)。例如

index.html.erb

<script type="text/javascript" charset="utf-8">
   $(document).ready(function() {
     $(this).unbind("ajaxStart ajaxStop")
   });
</script>

<%= link_to "show", xxx, :remote => true, "data-spinner" => true %>

<%= link_to "update", xxx, :remote => true, "data-spinner" => false %>

<%= link_to "remove", xxx, :remote => true, "data-spinner" => false %>

unbind 将为页面中所有可用的 ajax 调用禁用微调器。

应用任何想法或解决方案?

提前致谢。

【问题讨论】:

    标签: jquery ajax ruby-on-rails-3 spinner


    【解决方案1】:

    您可以将 ajax:before 绑定到您想要的元素,在 jquery-ujs 中。 See this article

    您可以像这样定位具有数据微调器的元素

    $('a[data-remote=true][data-spinner=true]').on('ajax:before', function(){
      $("#ajax_loader").modal('show');
    })
    
    $('a[data-remote=true][data-spinner=true]').on('ajax:complete', function(){
      $("#ajax_loader").modal("hide");
    })
    

    希望这会有所帮助。

    更新:

    您可以检查所有具有data-spinner 属性的remote =&gt; 'true' 链接。

    $('a[data-remote=true]').on('ajax:before', function(){
    
       var nospinner = false;
    
       if($(this).attr('data-spinner') != undefined && $(this).attr('data-spinner') == "false"){
          nospinner = true;
        }
    
        if(nospinner==false) {
          $("#ajax_loader").modal('show');
        }
    
    })
    

    【讨论】:

    • 感谢您的解决方案。对不起!到目前为止,我还没有在我的 ajax 链接中使用“data-spinner”=> true 属性。由于有很多 ajax 链接,我打算仅将“data-spinner”=> false 应用于那些我不想要 ajax 微调器的链接?有什么解决办法吗?
    • 我已根据您的要求更新了答案。希望有帮助。此外,如果您为希望在其上显示微调器的所有链接提供数据属性会更好,这样您就可以将 ajax:before 绑定到该特定元素。
    • @anpsmn 如果我们使用 client_side_validations gem,gem 会发出 ajax 请求来验证唯一性,如何显示这种情况下的微调器?
    • @nishanthan 你能给出 gem 的 url 吗? this the gem 你正在使用吗?如果是,则使用微调器的回调。
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多