2016-06-06 25 views
1

我正在尝试学习如何使用我的Razor ajax格式的pace.js。该表单返回一个部分视图。根据他们的文档,不需要配置,因为它monitors all ajax requests(长于500毫秒)。我有以下的AJAX形式:如何使用pace.js跟踪剃刀ajax格式

@using (Ajax.BeginForm("MyAction", null, 
new AjaxOptions 
{ 
    HttpMethod = "POST", // HttpPost 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "myDiv", 
    OnBegin = "myBeginFunction()", 
    OnSuccess = "mySuccessFunction(data.msgType, data.msg)", 
    OnFailure = "myFailFunction('Error', error)", 
    OnComplete = "myCompleteFunction()" 
}, new { @class = "form-inline" })) 
{ 
    //... 
} 

myBeginFunction()我加Pace.restart()

function myBeginFunction() 
{ 
    //... 
    Pace.restart(); 
    //... 
} 

Unfortnately,当负载杆完成表单提交完很久以前的负载棒不同步与形式。我有2个问题

  1. 有什么特别的我需要做的,使其跟踪剃刀ajax形式?
  2. 如果我需要手动跟踪表单,我该怎么做?根据documentation,我可以像这样追踪,Pace.track(function(){ $.ajax(...)});,但我不确定如何用剃刀进行此操作。

回答

0

虽然我不能够使用速度(这将是伟大的,因为有最低配置),我是能够解决您在使用一种叫做NProgress插件的问题。这基本上执行相同的行为,但不会像Pace那样自动执行DOM跟踪。因此,我必须手动启动并启动该功能。

function myBeginFunction() 
{ 
    //... 
    NProgress.start(); 
    //... 
} 

function myCompleteFunction() 
{ 
    //... 
    NProgress.done(); 
    //... 
} 

由于NProgress如何工作的性质,酒吧将增加,但从来没有完成,直到我打电话NProgress.done();

1

从您的ajax begin函数中删除pace.restart。将此添加到您的页面。

<script> 
    paceOptions = { 
     restartOnPushState: true, 
     ajax: true, 
     document: true, 
     restartOnRequestAfter: true 
    } 
</script> 
+0

它不起作用。 Ajax表单返回一个局部视图。我不确定这是否会影响它? – usr4896260

+2

ir影响每个DOM活动。与ajax或文档加载无关。 – MRebati

+1

好的谢谢。尽管我仍然无法实现它,但我发现了一个替代解决方案,其中包含我在上面发布的答案。 – usr4896260