【问题标题】:Durandal view no more displayed if user click quickly on menus如果用户快速单击菜单,则不再显示 Durandal 视图
【发布时间】:2014-01-17 23:45:04
【问题描述】:

我在我的 SPA 中使用 Durandal 2.0 和 Breeze。

我的司机(司机)有一个侧边栏菜单,用户可以在其中单击子菜单(Récents、Disponibles、Indisponibles)以使用不同的参数调用我的视图。这将用数据填充 koGrid。数据在 activate 调用中获取,koGrid 的绑定在 compositionComplete 中完成。

大部分时间一切都很顺利。当我快速单击子菜单(调用相同的视图)时,事情就出错了。示例:我单击“最近”并立即(不等待视图显示)单击“Disponibles”。

我有以下激活:

var activate = function (filterParam) {
    filter(filterParam);
    pagedDataSource.getDataFunction = getData;
    pagedDataSource.getPredicatesFunction = getPredicates;
    return pagedDataSource.reload();
};

我有下面的compositionComplete代码:

var compositionComplete = function (view) {
    bindEventToList(view, '.kgCellText', gotoDetails);
    $('#mySearchGrid').attr('data-bind', 'koGrid: gridOptions');
    ko.applyBindings(vm, document.getElementById('mySearchGrid'));
};

当我跟踪活动时,我注意到如果用户快速单击子菜单,则激活没有时间完成并被再次调用(对于用户的第二次单击)并且 compositionComplete 不会执行。在那之后,视觉上什么都没有发生。好像被屏蔽了。

知道如何防止这个问题吗?

谢谢。

【问题讨论】:

  • 您使用的是哪个版本的 Durandal?在 2.0.1 之前存在一个问题。详情请见github.com/BlueSpire/Durandal/issues/305
  • 我使用的是 2.0.0.正如您提供的链接中提到的,如果我关闭转换,问题就消失了。非常感谢您的帮助。所以我会尽快将我的 Durandal 版本迁移到 2.0.1 进行修复。
  • 如果您使用已应用的修改添加答案并接受它作为答案,那就太好了。

标签: durandal durandal-2.0


【解决方案1】:

迁移到最新的 Durandal 版本 2.0.1 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多