我正在使用durandal模板开发一个ASP.NET MVC项目。
我遇到了一个问题,需要一些帮助才能找到更优雅的解决方案。我有一个标题栏(蓝色)和一个侧边栏(灰色)。两者都包含一个元素(链接)来创建一个新的传输。在下面的屏幕截图中,这显示了子弹1& 2。
我的想法就是这样:
#/newTransport
#detailTransport/:id
以下是代码:
var activate = function () {
var id = datacontext.createTransport();
var url = '#/detailTransport/' + id;
router.navigateTo(url);
return true;
};
所以这个newTransport视图并没有真正显示,我用这个链接允许我在显示之前创建传输。
我的问题是它只是第一次工作,而且它似乎打破了路由器逻辑。
我注意到如果我将代码从激活移动到视图内的按钮,我就不再有问题了。
因此对于简历:我需要在导航到该实体的细节之前执行一些代码(创建实体)。我的尝试(如上所述)似乎不起作用。
有什么想法吗?
答案 0 :(得分:2)
第一次单击应该是viewmodel中的方法,而不是要激活然后重定向的路由。它可能会混淆你想要的东西。导航中的导航不是std练习。只需将第一次单击绑定到根vm中的方法即可。然后导航。