then()
ストア レコードを作成して保持した後、promise内で新しいウィンドウを開く方法を見つけるのに苦労しています。
次のコードは、Chrome のポップアップ ブロッカーによってブロックされます。
var obj = this.get('store').createRecord('user', {
first_name: 'John',
last_name: 'Smith'
});
obj.save()
.then(function (user) {
window.open('http://google.com', '_blank'); // this is blocked by chrome pop-up blocker
})
.catch(function (error) {
this.set('errors', error.errorArray); // display errors in the template
});
このコードは機能し、ポップアップブロッカーをバイパスしますが、私の問題は、保存中にバックエンドがエラーをスローした場合、最終的にユーザーが正常に作成されなかったため、新しいウィンドウを開きたくないということです。エラーが表示されるメイン ウィンドウに表示されます。エラーが発生した場合はウィンドウを閉じることができますが、ウィンドウをすぐに開いたり閉じたりするちらつきのように見えるため、適切ではありません。
var window_handle = window.open('', '_blank');
var obj = this.get('store').createRecord('user', {
first_name: 'John',
last_name: 'Smith'
});
obj.save()
.then(function (user) {
window_handle.location.href = 'http://google.com'; // this is NOT blocked by chrome pop-up blocker
})
.catch(function (error) {
this.set('errors', error.errorArray); // display errors in the template
});
誰かがより良いアイデアを持っていますか?