【发布时间】: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