2016-08-09 17 views
2

私の問題は、クエリパラメータが有効かどうかを確認するためにページのコントローラを実行する際に、迅速な確認チェックを行う必要があることです。だから、今、私はこれを行う:

if (invalid params) { 
    $state.go('state', {param: validParam}, {reload: true}); 
} 

// Controller logic here to initialise the page 

私はパラメータが無効な場合、有効なパラメータおよびすべてと全体のコントローラのリロードは大丈夫であるということです期待してここに行動。実際には、この$state.go行の後でも、残りのコントローラはまだ実行しようとしています。私はこの問題を解決するために管理している唯一の方法はそうのようelseステートメントにコントローラのロジックを動かす行うことです

if (invalid params) { 
    $state.go('state', {param: validParam}, {reload: true}); 
} else { 
    // Controller logic here to initialise the page 
} 

これは動作しますが、私はそれが理想的なの多くを移動するために見つけることはありませんこのelseステートメントに複雑なロジックがあり、コントローラーが$state.goで停止し、コントローラーをリロードすると予想されます。したがって、なぜ私はreload: trueを使用していますか?

これは期待どおりに起こっていない理由は何ですか?

答えて

2

をまあ、state.goが実行された関数呼び出し、ですが、更なる処理を停止しません。

if (invalid params) { 
    $state.go(‘state’, {param: validParam}, {reload: true}); 
    return; 
} 

を我々は機能していない場合...それは操作の平野JSセットは..私たちはすべきである:ケースでは、我々はreturnのように、実行を停止するように制御フロー計算書を持って、機能していますこのような関数でそれらをカプセル化:

var myFunction = function(){ 
    ... 
    if (invalid params) { 
     $state.go(‘state’, {param: validParam}, {reload: true}); 
     return; 
    } 
} 
myFunction(); 
+1

真真が、私は答えを – germainelol

+0

感謝を関数にコントローラをラップし、あなたに戻って取得する、それが働きました。私はこれが時々アングルのファンではない理由の一つだと思います。実際には単純なJavaScriptの問題だと、AngularまたはUI-Routerの問題だと思っていました。/facepalm – germainelol

+0

これはちょっと助けてくれて良かった;) –

0

あなたが何かしようとしました:

$state.go($state.current, {param: validParam}, {reload: true}); 
関連する問題