Durandal导航:attr href绑定无法正常工作

时间:2014-11-17 11:09:48

标签: durandal

我在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()}">

我尝试了几种配置方式,但它们似乎都没有帮助。我想它只是路由配置或散列中的不正确语法。无法弄清楚。

任何帮助将不胜感激!

2 个答案:

答案 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()}">

此外,如果您只是超链接到路线(正如您所做的那样)并从路线中删除哈希参数,那么您应该没问题。