我在Durandal中进行了以下设置以进行导航:
layout.js
...
that.activate = function () {
router.map([
{ route: '', title: abp.localization.localize('HomePage', 'MyProject'), moduleId: 'viewmodels/home', nav: true, menuName: 'Home' },
{ route: 'editpage/:id', title: abp.localization.localize('EditPage', 'MyProject'), moduleId: 'viewmodels/editpage', hash: '#/editpage/id' }
]).buildNavigationModel();
pages.js
...
that.editPage = function (page) {
that.router.navigate('editpage/' + page.id());
};
pages.cshtml
<ul class="list-group" data-bind="foreach: pages">
<div class="list-group-item">
<span class="page-name" data-bind="text: name"></span>
<div class="text-right">
<!--<button type="button" class="btn btn-info btn-sm" data-bind="click: $parent.editPage">-->
<button type="button" class="btn btn-info btn-sm" data-bind="attr: {href: '#/editpage/' + id()}">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> @L("EditPage")
</button>
</div>
</div>
</ul>
我想导航到&#34; EditPage /:id&#34;我点击编辑页面按钮的页面。但是只有点击装订才有效:
<button type="button" class="btn btn-info btn-sm" data-bind="click: $parent.editPage">
attr href绑定不会:
<button type="button" class="btn btn-info btn-sm" data-bind="attr: {href: '#/editpage/' + id()}">
我尝试了几种配置方式,但它们似乎都没有帮助。我想它只是路由配置或散列中的不正确语法。无法弄清楚。
任何帮助将不胜感激!
答案 0 :(得分:1)
试试这个
<a class="btn btn-info btn-sm" data-bind="attr: { href: '#editpage/' + id() }"></a>
1)将href
attr与a
代码一起使用,而不是button
2)在/
#
#/editpage/ changed to #editpage/
答案 1 :(得分:0)
我之前没有使用过hash参数。但是,根据路由器文档(http://durandaljs.com/documentation/Using-The-Router.html),您在此处查找的哈希值实际上是#/editpage/id
,而您传递的哈希值是'#/editpage/' + id()
。请尝试编写以下内容:
路由器:
{ route: 'editpage/:id', title: abp.localization.localize('EditPage', 'MyProject'), moduleId: 'viewmodels/editpage', hash: '#editpage/:id' }
页
<button type="button" class="btn btn-info btn-sm" data-bind="attr: {href: '#editpage/' + id()}">
此外,如果您只是超链接到路线(正如您所做的那样)并从路线中删除哈希参数,那么您应该没问题。