3

我正在查看这些 route-info 对象结构的文档,但没有找到。由于 Durandal 使用其他 JS 库,我不确定它属于什么(也许是 sammy?)。

我面临 2 个问题: 问题 #1我想在路线信息中使用一个图标,我发现我可以使用标题或标题来完成那个......丑陋的选项 1:在标题中使用图标信息

{ route: 'dashboard', title: 'Dashboard', moduleId: 'viewmodels/dashboard', nav: true, caption: 'icon-dashboard' },

并做一些这样的绑定:

<i data-bind="attr: { 'class': caption}"></i>
<a data-bind="attr: { href: hash }, html: title"></a>

或丑陋的选项2:在模型中使用图标html代码

{ route: 'dashboard', title: 'Dashboard', moduleId: 'viewmodels/dashboard', nav: true, caption: '<i class="icon-plus-sign"></i> Dashboard' }

绑定将是:

<a data-bind="attr: { href: hash }, html: caption"></a>

我个人喜欢选项 1,因为它是数据和显示的分离。但是属性(标题)不是放置它的最佳位置......还有什么其他选择???我看到人们使用设置,但同样,设置选项是什么?我可以创建自己的图标属性吗?

其他问题如何设计子菜单...是否有引用父路由的属性?

2013 年 8 月 23 日更新我找到了有关子路由器的信息

4

1 回答 1

4

您可以将自己的属性添加到route对象。这就是 JavaScript 的好处!

所以正如你所说,你可以像这样向路由添加一个设置对象:

{ route: 'dashboard', title: 'Dashboard', moduleId: 'viewmodels/dashboard', nav: true, settings : { caption: 'icon-dashboard', another :'property'} }

只需像以前一样进行绑定:

<i data-bind="attr: { 'class': settings.caption}"></i>
<a data-bind="attr: { href: hash }, text: title"></a>

只需确保将在 UI 中绑定的所有对象都包含settings.caption或在绑定中添加额外的逻辑来管理属性为的路由对象undefined

于 2013-08-23T07:16:32.823 回答