1

現在、false を返すと、canDeactive コールバックが 2 回呼び出されています。

コール スタックは同じですが、system.js では、関数の args 変数を取得すると、呼び出しごとに異なる値を持つことが唯一の違いです。

ネストされた setTimeout のブレークポイントが初めてヒットしたとき、引数には、表示への移動の値があ​​ります。

2 回目 (一瞬) args の値は、私が述べた現在のビューのものであり、非アクティブ化されない可能性があります。

これは誰にとってもおなじみの音ですか?おそらく、各ビューのrequireステートメントで何か間違ったことをしていますか?

詳細情報を編集

私のセットアップ: (- ネスティングを示す)

シェル

-ヘッダ

-view1

-- ネストされたビュー (ノックアウトを使用してバインド)

-view2

-view3

-- ネストされたビュー

ビュー間を移動するために、各ビューにページの見出しとリンク項目を示すプロパティがあります。たとえば、view1 header: "Page 1", links [{path: "#/view2"}]. 私のビューのそれぞれは、ヘッダー ビューを「必要」とし、これらのオプションをアクティブに設定します (ハックのように感じるので、この作品は嫌いですが、それはまた別の機会にします)。

リンクをクリックすると、シェルで関数が呼び出され、次に router.navigateTo(クリックされた項目のパス) が呼び出されるか、view3 に戻ります。

この問題がすべてのビュー (1、2、および 3) で発生していることを確認できます。また、他のライフサイクル コールバックと一緒に canActivate が期待どおりに正しい順序で 1 回起動することも確認できます。

コードが不足していて申し訳ありませんが、ナビゲーションの必要性を制御するものであるように見えるため、どこを見ればよいかわかりません(上記の単一の違いのため)

4

1 に答える 1