4

デュランダル2.0を使用しています。検索ビューがあり、選択したアイテムを詳細ビューに渡したいです。Idの渡し方は知っているのですが、今回の検索ではオブジェクト全体が対象になるので、ナビゲートする際にオブジェクトを渡したいと思います。ルートをアクティブにすると送信されます。

ルートは次のようにマッピングされます。

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;
};
4

1 に答える 1

4

あなたがしようとしていることは、ルーターのナビゲーションを使用して行うことはできません. ナビゲートすると、ルーターが内部的に URL を変更するため、コンポジションのライフサイクルがトリガーされます。したがって、基本的にこれを機能させるには、すべてのオブジェクトを URL クエリ文字列に追加する必要がありますが、これはかなり見苦しいものです..

このシナリオにアプローチする方法については、DurandalJS Google グループの Jonathan Curtis による非常に完成度の高い回答をご覧ください。

提案されている 3 つのアプローチは次のとおりです。

  • 親子
  • EventAggregator
  • 共有コンテキスト (またはモデル)
于 2013-09-04T09:28:23.170 に答える