2

Durandal 2.0.1 を使用して、router.navigateBack 関数を正しく動作させようとしています。

リードと呼ぶエンティティを作成できるビューモデルがあります。新しいリードを作成した後、uri を置き換えて、作成リード ルートの代わりに編集リード ルートを持ち、履歴でも置き換えたいと考えています。保存後に次の関数を呼び出します。

router.navigate('#lead/' + vm.lead().id(), { replace: true, trigger: false });

ここに私の設定ファイルのルートの説明があります

{
    route: 'lead(/:leadId)',
    moduleId: 'lead/lead'
}

その後、私が電話するとき

router.navigateBack();

予想されるルートに移動しますが、常にページ全体が更新されます。ページ全体の更新を避けて、いつものようにナビゲートしようとしています。

durandal 1.0では、私はただ電話していました

router.replaceLocation();

これと同じタスクを達成するには、うまくいくでしょう。ここで何かが足りないのではないかと思っています。

4

1 に答える 1

1

次のことを試してください。

var leadId = vm.lead.peek().id.peek();
router.navigate('#lead/' + leadId, { replace: true, trigger: false });

あなたのオブザーバブルには、完全な再計算を引き起こしている依存関係があると思います。ノックアウトを使用peek()して、依存関係を作成せずに値を取得できます。

于 2014-04-22T05:00:22.217 に答える