2016-06-16 123 views
0

是否可以將可選參數傳遞給配置狀態的解析函數?將自定義參數傳遞給狀態解析函數

因此,像

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


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

function getSomethingElse() { 
) 

我期待再利用其他國家的決心功能,但在某些情況下,我需要不同的邏輯函數內被執行。

任何人都可以提供一些建議嗎?

感謝

編輯

OK,所以我實際上是在尋找在一個自定義PARAM傳遞給下決心功能是依賴於早期的決心功能。

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

function getSomething() { 
    return something 
} 

function getSomethingElse(num, resA) { 

) 

在這個例子中,第二個得到解決,一旦狀態被打,不等到resA得到解決馬上還以顏色,這樣我就可以CONSOLE.LOG出num PARAM但resA在那個未定義點。

+0

是的,這是可能的,你可以重複使用它跨越國家,只要確保你打電話給你通話時解決之前定義的函數。 – gaurav5430

+0

好的,我已經用我想實現的更具體的場景進一步更新了我的問題。 – mindparse

回答

1

讓我們舉個例子:RESA和RESB的

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

的值必須是功能。 resA就是這種情況。對於resB,僅當getSomethingElse(1)返回函數時纔是這種情況。所以getSomethingElse必須像

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

讓我們假設getSomething回報「你好」。假設您想讓getSomethingElse(1)返回的函數使用該值hello。因此,你需要告訴UI的路由器,通過resB引用的函數需要的resA結果作爲論據:

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

現在你可以這樣使用該功能價值和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