2015-11-28 21 views
0

我有兩個功能。鏈接兩個函數的最佳實踐,, AngularJs/JavaScript

單擊'關閉'按鈕時隱藏模式 其他功能向右輕掃並將模式更改爲另一個狀態/視圖。

我遇到了一個問題,當用戶滑動到新狀態時,模態不'隱藏'。我可以看到它的工作原理,但模態仍在展示,我認爲最好的方法是通過鏈接我的兩個功能?這是正確的術語嗎?

兩個功能..

隱藏模式

$scope.closetripInfo = function() { 
    $scope.modal.hide(); 
    }; 

揮筆正確揭示新.STATE

$scope.onSwipeRight = function() { 
    $state.go('app.current-trip'); 
} 

這個工作!但.. 我在想什麼做的是堵在我的令人興奮的closetripInfo功能爲onSwipeRight像這樣:

$scope.onSwipeRight = function() { 

    $scope.closetripInfo(); 
    $state.go('app.current-trip').closetripInfo(); 
} 

它的工作原理,但它不右看看我,我得到一個錯誤..我沒有成功地做到這一點。也許並不那麼簡單。我也認爲我可能需要了解承諾等最佳實踐?

的錯誤

類型錯誤:。$ state.go(...)closetripInfo不是一個函數 在範圍$ scope.onSwipeRight

任何意見或資源將大大謝謝!謝謝!

回答

3

您可以使用AngularJS promise來異步運行函數。 AngularJS的承諾由內置的$q服務提供。您可以閱讀here

$scope.onSwipeRight = function() { 
    var deferred = $q.defer(); 
    deferred.resolve('res'); 

    $state.go('app.current-trip'); 

    // We return a promise 
    return deferred.promise; 
} 


onSwipeRight().then(function(res) { 
    // Success callback 
    $scope.closetripInfo(); 
},null); 

這是在使用了$q服務fiddle。這也是一個很好的博客post,承諾被解釋爲卡通形象。

+0

Midhun!這真是太好了,而我正在想,但是我不知道執行此操作的正確方法!謝謝! – Shotbyabel