导航逻辑似乎只工作一次(durandal)

时间:2013-03-30 13:35:54

标签: knockout.js durandal hottowel

我正在使用durandal模板开发一个ASP.NET MVC项目。

我遇到了一个问题,需要一些帮助才能找到更优雅的解决方案。我有一个标题栏(蓝色)和一个侧边栏(灰色)。两者都包含一个元素(链接)来创建一个新的传输。在下面的屏幕截图中,这显示了子弹1& 2。

enter image description here

我的想法就是这样:

  • 点击后,这两个链接会导航至#/newTransport
  • 在激活此模块时,我调用我的datacontext创建一个具有初始值的实体,然后返回创建的传输的id
  • 接下来,(仍然在此激活中)我浏览#detailTransport/:id
  • 然后显示此新创建的传输ID的详细信息

以下是代码:

var activate = function () {
    var id = datacontext.createTransport();
    var url = '#/detailTransport/' + id;
    router.navigateTo(url);
    return true;
};

所以这个newTransport视图并没有真正显示,我用这个链接允许我在显示之前创建传输。

我的问题是它只是第一次工作,而且它似乎打破了路由器逻辑。

我注意到如果我将代码从激活移动到视图内的按钮,我就不再有问题了。

因此对于简历:我需要在导航到该实体的细节之前执行一些代码(创建实体)。我的尝试(如上所述)似乎不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

第一次单击应该是viewmodel中的方法,而不是要激活然后重定向的路由。它可能会混淆你想要的东西。导航中的导航不是std练习。只需将第一次单击绑定到根vm中的方法即可。然后导航。