0

私のプロジェクトでは、ネストされたビューに Angular UI の ui-router を使用しています。私のレイアウト (特定のレコード ページ) は次のようになります。

ここに画像の説明を入力

最初のロードですべてがうまく機能し、検証が機能し、フォームがモデルなどに変更を保存します。フォームに変更を加えて無効な状態のままにし、別のサブナビゲーションリンクを参照してからもう一度戻ると、問題が発生します. この時点で、以前にロードされたフォームは、親ビューから継承されたモデルを変更して無効にしていましたが、新しいフォームは、すべてのフィールドが初期状態であると信じているそのモデルでロードされたため、フォームは有効な状態になり、ユーザーはクライアント側の検証をバイパスします。ユーザーがフィールドを編集しない限り、フォームを起動して自動的に再度検証することはできないようです。

これを修正できる1つの方法は、ネストされたビューコントローラーにモデルをロードすることです。そのため、サブナビゲーションからフォームに再度クリックすると、新しいモデルがロードされますが、これが正しい解決策であるとは特に感じていません最初に親ビューとサブビューの両方をロードすると、モデルの GET が実行されます。

私はこれに少しこだわっています。どんな助けでも大歓迎です。

4

1 に答える 1

0

私が今思いついた解決策は、サブ ビュー コントローラーにリソースをコピーすることです。

$scope.parent.$watch('record', function(record) {
    if (!record) return;
    $scope.record = angular.copy(record);
}

これは、サブビューが読み込まれるたびに、親から更新されたコピーを取得するため、無効な変更が保持されないことを意味します。

検証を適切に開始するように微調整する方がよいでしょうが、現在それを行う方法がわかりません。

于 2013-07-24T15:37:42.777 に答える