2016-06-06 24 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