以下是我遵循的步骤:
1)新的asp.net mvc 4项目 2)选择了durandal spa模板 3)在shell.js中,添加了这条路线......
{ route: 'orders/:id', moduleId: 'viewmodels/order', nav: false }
4)添加了一个viewmodel-order.js:
define([], function () {
var Order = (function () {
function Order() {
this.orderId = '';
}
Order.prototype.activate = function (id) {
this.orderId = id;
};
return Order;
})();
return Order;
});
5)添加了一个view-order.html:
<h1 data-bind="text: orderId"></h1>
6)添加了一些指向welcome.html的链接:
<ul> <li><a href="#orders/1">Order #1</a></li> <li><a href="#orders/2">Order #2</a></li> <li><a href="#orders/3">Order #3</a></li> <li><a href="#orders/4">Order #4</a></li> </ul>
这很好用,我点击欢迎页面中的一个“订单”链接,然后打开订单视图。 Here is a zip containing the project.
将刚刚打开的订单添加到导航栏的最佳方法是什么?点击订单链接后,我希望导航栏看起来像这样:
Durandal |欢迎| Flickr |订单#1
如果我点击另一个订单链接,我希望导航栏看起来像这样:
Durandal |欢迎| Flickr |订单#1 |订单#2
我希望能够关闭订单并以此结束(在关闭第一个订单后):
Durandal |欢迎| Flickr |订单#2
最后但同样重要的是, 在订单之间导航时,我希望现有的view + viewmodel实例保持不变(注意:viewmodel脚本返回一个构造函数,因此它与welcome和flickr视图模型略有不同)。
非常感谢任何关于如何做到这一点的指示。
中此问题的链接答案 0 :(得分:0)
我相信你能够做到这一点的唯一方法就是重新构建导航模型。有一个关于谷歌小组的讨论,讨论自定义子导航,你可以在其中调用router.reset(),然后执行router.mapRoutes([...])。{whatever}来完成此操作。
我真的想不出另一种只是“添加”和/或“删除”路线的方法。这可能是你想要在github上作为产品的增强功能(至少对于子路由器)。