1

我的 Web 应用程序使用 bootstrap、knockout 和 durandal。下面是呈现的 html 的片段,它定义了一行五列。不相关的细节被忽略了。

<div class="row list-row" data-bind="click: function(vm, event) { $(event.currentTarget).trigger('durandal-navigation'); }">
<div class="col-xs-2">
    ...
</div>
<div class="col-xs-2">
    ...
</div>
<div class="col-xs-6">
    ...
</div>
<div class="col-xs-1">
    ...
</div>
<div class="col-xs-1">
    <button class="btn btn-default btn-xs deletebutton" data-bind="click: DeleteClicked">
        <i class="fa fa-trash"></i>
    </button>
</div>
</div>

现在,当鼠标悬停在任何这些 div 上时,适当的 css 会点亮整行,这是它应该的样子,并且单击导航到带有 durandal 的所需屏幕。但是,当用户单击最后一列中的按钮时,不应出现后者:仅应触发 DeleteClicked 函数。

有什么办法可以抑制这里的导航吗?

4

1 回答 1

0

我通过使用 sessionStorage 找到了一种非常简单的方法: DeleteClicked 现在包含该行

sessionStorage.setItem("cancelNavigation", true);

实际实现导航的应用程序部分:

$(document.body).on('durandal-navigation', function (event) { ... }

...在调用之前对“cancelNavigation”的状态进行检查router.navigate(...);,当然还会从 sessionStorage 中删除 cancelNavigation 键。完美运行!

于 2021-04-26T11:03:35.703 回答