首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在asp mvc中传递视图时javascript中的回调计时问题

在asp mvc中传递视图时javascript中的回调计时问题
EN

Stack Overflow用户
提问于 2017-08-25 18:57:43
回答 1查看 30关注 0票数 0

我有一种感觉,这是一个我错过的简单问题,但几个小时后,我放弃了,决定在这里发帖。

我正在尝试实现一个通用的分页部分视图,我可以在整个站点中使用它。因此,分页模型采用一个函数,该函数将绑定到稍后用作回调的分页控件。请参阅下面的UpdateFunction。

代码语言:javascript
复制
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单击事件paginationClick()的回调传入,如下所示...

代码语言:javascript
复制
<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()方法...(我知道页面参数目前没有被使用!)

代码语言:javascript
复制
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;
}   

}

如果任何人能提供一双额外的眼睛,我将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2017-08-25 19:22:59

我找到了一个解决方法,不是将getTransfers作为回调传递,而是将其作为数据属性附加到控件中,然后使用eval在正确的时间执行,如下所示:

代码语言:javascript
复制
data-callback="@Model.UpdateFunction"

然后

代码语言:javascript
复制
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;
}   

}

这不是我想要的解决方案,但它是有效的。如果任何人有任何想法如何让它作为一个回调,请让我知道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45879847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档