2015-09-16 51 views
1

或者至少,這就是我正在想的事情。我有以下功能:Ionic confirmPopup then()函數在用戶交互之前被調用

function checkExistingMember() { 

    var confirmPopup = $ionicPopup.confirm({ 
    title: 'Existing Member?', 
    template: 'Are you an existing member?', 
    cancelText: 'No', 
    okText: 'Yes' 
    }); 

    confirmPopup.then(function(res) { 

    if(res) {   
     // User is existing member 
     return true; 
    } else {   
     // User is NOT existing member 
     return false; 
    } 

    }); 

} // END checkExistingMember 

我然後調用它,它在我的控制器的最頂端,像這樣:

var isExistingMember = checkExistingMember(); 
if (isExistingMember) { 
    console.log('Is existing member'); 
} else { 
    console.log('Is NOT existing member'); 
} 

但隨後權當它被稱爲控制檯打印出Is NOT existing member用戶面前有機會回答。任何人都知道這是爲什麼發生?

值得一提的是,如果我直接在我的控制器中調用var confirmPopup = $ionicPopup.confirm() { ...}confirmPopup.then(...),即如果我沒有將它抽象爲函數,那麼一切正常。

回答

1

您需要明白,您不能僅從異步代碼返回。相反,你需要返回一個承諾對象

function checkExistingMember() { 

    return $ionicPopup.confirm({ 
    title: 'Existing Member?', 
    template: 'Are you an existing member?', 
    cancelText: 'No', 
    okText: 'Yes' 
    }) 
    .then(function(res) { 
    if (res) {   
     // User is existing member 
     return true; 
    } else {   
     // User is NOT existing member 
     return false; 
    } 
    }); 

} 

,並利用其可鏈接的API:

checkExistingMember().then(function(isExistingMember) { 
    if (isExistingMember) { 
    console.log('Is existing member'); 
    } else { 
    console.log('Is NOT existing member'); 
    } 
}); 
+0

有一個空的,如果在那裏聲明..它應該是如果(isExistingMember){...?另外,在運行函數時出現錯誤:「TypeError:Can not read property'then'of undefined」 – Tiwaz89

+0

是的,當然它應該是'if(isExistingMember)'。確保你從函數返回$ ionicPopup.confirm'。 – dfsq

相關問題