2017-08-25 50 views
0

我有一種感覺,這是一個簡單的問題,我失蹤,但幾個小時後,我已經放棄,並決定發佈在這裏。JavaScript中的回調計時問題,當通過在MVC中查看傳遞

我想實現一個通用的分頁視圖,我可以在整個網站上使用。因此,分頁模型需要一個函數,該函數將被綁定到用作稍後回調的分頁控件。請參閱下面的UpdateFunction。

ViewModels.Shared._PaginationPartialViewModel pagination = 
      new ViewModels.Shared._PaginationPartialViewModel() 
      { 
       CurrentPage = Filter.Page, 
       ItemFrom = GenericHelpers.Paging_GetItemFrom(10, Filter.Page, TotalItems), 
       ItemTo = GenericHelpers.Paging_GetItemTo(10, Filter.Page, TotalItems), 
       TotalItems = TotalItems, 
       TableClass = Filter.Table, 
       TotalPages = (int)Math.Ceiling((double) TotalItems/10), 
     UpdateFunction = "getTransfers('" + Filter.Table + "')" 
      }; 

現在,當模型綁定到視圖,這個功能是傳過來的回調,像這樣一個javascript click事件paginationClick()...

<a href="#" class="stock-pagination__action stock-pagination__action_state_active @(Model.TableClass + "_Page")" data-page="@Model.CurrentPage" onclick="paginationClick(this, @(Model.CurrentPage), @Model.UpdateFunction); return false;">@Model.CurrentPage</a> 

的paginationClick()函數火災,但是在檢查開發控制檯時,回調方法似乎是先發射。下面是paginationClick()方法...(我知道頁面參數沒有被利用的BTW!)

function paginationClick(control, page, callback) 
{ 
if (!$(control).hasClass('stock-pagination__action_state_active')) { 
    $(control).parent().find('a').each(function() { 
     $(this).removeClass('stock-pagination__action_state_active'); 
    }); 

    $(control).addClass('stock-pagination__action_state_active'); 

    callback; 
} 

}

我任何人都可以提供一個額外的一雙眼睛,這將是大加讚賞!

回答

0

我發現一個變通與此,也可以代替通過getTransfers作爲回調,我它附加到控制作爲數據屬性然後使用EVAL在正確的時間等,以便執行以下步驟:

data-callback="@Model.UpdateFunction" 

然後

function paginationClick(control, page) 
{ 
if (!$(control).hasClass('stock-pagination__action_state_active')) { 
    var arr_Controls = []; 
    $(control).parent().find('a').each(function() { 
     $(this).removeClass('stock-pagination__action_state_active'); 
     arr_Controls.push($(this)); 
    }); 

    $(control).addClass('stock-pagination__action_state_active'); 
    eval($(control).attr("data-callback")); 
    //callback; 
} 

}

這不是我後的解決方案,但它的工作原理。如果任何人有任何想法如何讓它作爲回調工作,請讓我知道。

相關問題