2017-06-19 4 views
1

文書を削除するかどうかを確認するポップアップボックスを作成しようとしています。私がしようとした場合:Ember jsでアラート確認が機能しない

if(alertify.confirm("Delete this?')) { 
    this.store.findRecord('document', docId, {backgroundReload: false}).then((doc) => { 
    doc.destroyRecord(); 
    alertify.success('Document successfully deleted!'); 
} 

alertify.confirmはノンブロッキングなので、それは私が理解し、削除コードを実行する前に確認を待ちません。私がしようとした場合:ストアは未定義まで来ているようfindRecordが動作しないよう

deleteFile(docId) { 
    alertify.confirm("Are you sure you want to delete this document?", function (e) { 
    if (e) { 
     this.store.findRecord('document', docId, {backgroundReload: false}).then((doc) => { 
     doc.destroyRecord(); 
     alertify.success('Document successfully deleted!'); 
     }); 
    } else { 
     alertify.error('Something went wrong!'); 
    } 
    }); 
} 

、それは確認を求めんが、削除のコードは動作しません。私はサービスとして店舗を注入しようとしましたが、それはどちらも機能しません。この確認ボックスを機能させる方法はありますか?

答えて

2

関数内でthisを使用すると、その関数のthis-contextを参照します。太い矢印の関数を使うか、これを変数に割り当てることができます。前者は次のようになります:

deleteFile(docId) { 
    alertify.confirm("Are you sure you want to delete this document?", (e) => { 
    if (e) { 
     this.store.findRecord('document', docId, {backgroundReload: false}).then((doc) => { 
     doc.destroyRecord(); 
     alertify.success('Document successfully deleted!'); 
     }); 
    } else { 
     alertify.error('Something went wrong!'); 
    } 
    }); 
} 
+0

完璧に動作します、説明のためにありがとう! –

関連する問題