我无法理解为什么在我的 Durandal 应用程序中,当我转到详细信息页面然后返回列表后,我得到一个 url,其中详细信息页面的 url 嵌入在当前 URL 中。
例如:
当我开始时,我有:http://localhost:51429/#/
然后我进入详细页面:http://localhost:51429/physDetail
然后我回到列表页面:http://localhost:51429/physDetail#/physList
为什么我在 url 中嵌入了“physDetail#”?问题是,如果我按 F5 刷新 html,我会得到 404。
我正在设置这样的路线:
var routes = [{
url: 'physList',
moduleId: 'viewmodels/physList',
name: 'Physicians',
visible: true
}, {
url: 'physDetail',
moduleId: 'viewmodels/physDetail',
name: 'View Physician Detail',
visible: false
}, {
url: 'incentives',
moduleId: 'viewmodels/incentiveList',
name: 'Incentives',
visible: true
}, {
url: 'membershipList',
moduleId: 'viewmodels/membershipList',
name: 'Membership',
visible: true
}];
通过单击列表中的一行来切换到详细信息页面。列表 HTML 如下所示:
<tbody data-bind="foreach: $root.physicians, delegatedHandler: 'click'">
<tr data-click="physClicked">
<td data-bind="text: contact_LastName"></td>
<td data-bind="text: contact_FirstName"></td>
<td data-bind="foreach: contact_Phones">
<span data-bind="phoneFormat: fullPhone"></span>
</td>
<td data-bind="foreach: contact_Emails">
<span data-bind="emailFormat: address"></span>
</td>
</tr>
</tbody>
js 处理程序如下所示:
function physClicked(phys, event) {
router.navigateTo("physDetail");
return;
}
通过单击页面顶部的按钮返回列表(或其他页面)。按钮 HTML 如下所示:
<div class="btn-group" data-bind="foreach: router.visibleRoutes">
<a data-bind="css: { active: isActive }, attr: { href: hash }, text: name"
class="btn btn-info" href="#"></a>
</div>
我应该禁止跳转到另一个页面吗?我应该只允许后退按钮还是在保存或取消后执行 router.navigateBack() ?
我试图在 Durandaljs 网站上找到一些关于此的指导,但要么不存在,要么我不知道要问的正确问题。
感谢您的任何见解。