使用ValueConverter过滤Aurelia中的路由 - 路由始终为空

时间:2015-11-05 14:27:41

标签: aurelia aurelia-binding aurelia-router aurelia-navigation

在nav-bar.html中我有

<li repeat.for="row of router.navigation | routeLanguageFilter2" class="${row.isActive ? 'active' : ''}">

我认为为路线设置过滤器是相当简单的:

export class RouteLanguageFilter2ValueConverter {
    toView(routes) {
        console.log(routes);
        let self = this;

        let res = [];
        for (let r of routes) {
            res.push(r);
        }
        return res;
    }
}

但是当我登录时,路由总是[]。记录下来:/我在这里做错了什么?

修改

更改了标题和相当多的原始问题,因为事实证明我有点困惑而且没有关注主要问题。

http://plnkr.co/edit/dnCtpI?p=preview

我发现了问题,但是我很遗憾如何找到另一种方法来实现同样的目标。在我的nav-bar.html里面我就是这样的:

<div if.bind="true"> <!-- could be anything -->
            <require from="../styles/blah.css"></require>
            <div class="container" id="banner">
                <img src="images/logo.png" />
            </div>
            <require from="nav-bar"></require>
            <nav-bar router.bind="router"></nav-bar>
        <div class="page-host">
            <router-view></router-view>
        </div>
    </div>

当我删除<div if.bind="xxx">部分时,它有效。但是现在我只有其他问题,我不知道如何以其他方式解决: - )

无论如何感谢fops,但我的傻瓜并没有真正说明我的真正问题。我觉得它看起来有点太快了。 :/

2 个答案:

答案 0 :(得分:0)

working example:

总结简短: 如果添加额外的参数(你的languageId),那么在路线上使用设置对象时缺少括号及其最佳实践

 { route: ['','welcome'],  moduleId: './welcome',      nav: true, title:'Welcome', settings: {languageId:13} },

答案 1 :(得分:0)

用show.bind替换if.bind就可以了。