2017-07-19 2 views
0

誰かがページからナビゲートしようとすると、警告通知ボックスを使用しようとしています。しかし、ルートのwillTransitionアクションでは、alertifyは非常に非同期であり、emberは確認を待たない。クリックした内容に関係なく、ページは既にナビゲートされています。経路からEmberの遷移で動作しないAlertify

willTransition(transition) { 
    alertify.confirm('Confirm', 'Are you sure you want to navigate?', function(e) { 
    if(e) { 
    return true; 
    } else { 
    transition.abort(); 
    } 
    }); 
} 

私を手伝ってください!

答えて

0

トランジションを中断して再試行できます。確認ダイアログを表示する前にトランジションを中止する必要があります。ダイアログを確認した後、移行を再試行してコードが確認ダイアログを再び表示しないようにすることができます。したがって、次のものは動作するはずです(テストされていません):

export default Ember.Route.extend({ 

    // ... 

    showConfirmation: true, 

    actions: { 
    willTransition(transition) { 
     if(!this.get('showConfirmation')) { 
     this.set('showConfirmation', true); 
     return true; 
     } 
     // Abort the transition for now 
     transition.abort(); 

     // Now show a confirm box with alertify. 
     // According to the docs, only the following 
     // is allowed: http://alertifyjs.com/confirm.html 

     alertify.confirm('Are you sure you want to navigate?',() => { 
     // According to the documentation of alertify, 
     // this code is only run when you confirm your box. 
     this.set('showConfirmation', false); 
     transition.retry(); 
     }); 
    } 
    } 
} 
関連する問題