【问题标题】:Passing an object when navigating in Durandal在 Durandal 中导航时传递对象
【发布时间】:2013-11-29 04:46:05
【问题描述】:

我正在使用 Durandal 2.0。我有一个搜索视图,想将所选项目传递给详细视图。我知道如何传递 ID,但由于在这种情况下搜索具有整个对象,因此我想在导航时传递该对象。我想我可以使用带有 splat 的路线,但我不知道如何当我激活路由时发送它。

路线映射为:

router.map([
    { route: '', title: 'Search', moduleId: 'viewmodels/search', nav: true },
    { route: 'create', title: 'Add', moduleId: 'viewmodels/create', nav: true },
    { route: 'details*movie', title: 'Details', moduleId: 'viewmodels/details', nav: false },
    { route: 'edit', title: 'Edit', moduleId: 'viewmodels/edit', nav: false }
]).buildNavigationModel();    

搜索视图模型导航如下:

    var openmovie = function (data) {
    router.navigate('details*'+ ??what do I do here??);
};

并且详细视图模型具有激活功能:

    var activate = function(data) {
    ???what will the data be???
    return true;
};

【问题讨论】:

    标签: durandal


    【解决方案1】:

    使用路由器的导航无法实现您尝试执行的操作。当您导航时,路由器会在内部更改 URL,从而触发组合生命周期。所以基本上为了完成这项工作,您需要在 URL 查询字符串中添加所有对象,这可能会非常难看..

    看看这个very completed answer by Jonathan Curtis in the DurandalJS Google Groups,了解如何处理这种情况。

    建议的三种方法是:

    • 亲子
    • 事件聚合器
    • 共享上下文(或模型)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-01
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 2016-11-23
      • 1970-01-01
      相关资源
      最近更新 更多