2016-06-16 10 views
0

設定された状態の解決関数にオプションのパラメータを渡すことは可能ですか?カスタムパラメータを状態解決関数に渡す

ので

resolve: { 
    resA: getSomething(1), 
    resB: getSomethingElse 
} 


function getSomething(num) { 
    if(num===1) { 
     //do something here 
    } 
    return something 
} 

function getSomethingElse() { 
) 

のようなもの、私は他の州に解決機能を再利用するために探していますが、特定のケースでは、私は、関数の内部で実行されるように異なるロジックが必要になります。

誰もが提案を提供できますか?

おかげ

EDIT

OK、私は実際に早く解決機能に依存している解決機能にカスタムのparamに渡しで探しています。この例では

resolve: { 
    resA: getSomething, 
    resB: getSomethingElse(1) 
} 

function getSomething() { 
    return something 
} 

function getSomethingElse(num, resA) { 

) 

は、第二の決意は、すぐに状態がヒットされ、解決されます resAまで待たないとすぐにトリガーされますので、私は numのparamをCONSOLE.LOGことができますが、 resAはその時に定義されていませんポイント。

+0

はい、それは可能です、そして、あなたはちょうどあなたが決意を呼び出す前に、呼び出す関数が定義されていることを確認し、状態を渡ってそれを再利用することができます。 – gaurav5430

+0

私は実装しようとしているより具体的なシナリオを使って質問をさらに更新しました。 – mindparse

答えて

1

はのは例を見てみましょう:RESAとRESBの

resolve: { 
    resA: getSomething, 
    resB: getSomethingElse(1) 
} 

値は関数でなければなりません。これはresAの場合です。 resBの場合は、getSomethingElse(1)が関数を返す場合のみです。だから、getSomethingElseはのはgetSomething戻って「こんにちは」と仮定してみよう

function getSomethingElse(value) { 
    return function() { 
     // ... 
    } 
} 

のように見える必要があります。そして、getSomethingElse(1)によって返された関数にその値helloを使用させたいとしましょう。

function getSomethingElse(value) { 
    return function(resA) { // the name of the argument MUST BE resA. This function will be injected 
     // ... 
    } 
} 

そして今、あなたは、このようにその関数の値とRESAの両方を使用することができます:あなたは、このようにresBで参照される関数は、引数としてresAの結果を必要とするUI-ルータに指示する必要があります。たとえば、値上とRESAに応じて、HTTP呼び出しを行うには:

function getSomethingElse(value) { 
    return function($http, resA) { 
     if (value === 0) { 
      return $http.get('/zero').then(...); 
     } 
     else { 
      return $http.get('/one/' + resA).then(...); 
     } 
    } 
} 
+0

これは、非常に便利なテクニックを知っていただきありがとうございます! – mindparse

関連する問題