swal์ ์ฌ์ฉ์ ์ ์ html์ ์ถ๊ฐํ๋ ค๊ณ ํ์ง๋ง html์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์์ ํด๊ฒฐ์ฑ
์ ๋ฌด์์ด์์ต๋๊น? ๋์์ฃผ์ธ์.
๊ฐ์ฌ ํด์
์๋ ํ์ธ์ @srikanthcx
์ด ์๋ฃจ์ ์ด ํจ๊ณผ๊ฐ ์์ต๋๊น?
์๋์, ๋์ html์ ์ ๋ฌํ ํ์๊ฐ ์์ต๋๋ค. ์์ ์๋ฃจ์ ์ ์ ์๊ฒ ์ ํฉํ์ง ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์ด ๊ฐ์ ๊ฒ์ด ํจ๊ณผ๊ฐ ์์๊น์?
const wrapper = document.createElement('div');
wrapper.innerHTML = YOUR_DYNAMIC_HTML;
swal({
title: 'Test Title',
text: 'Test Text',
content: wrapper
});
์๋ฒฝํ์ง๋ง ๋ ๋ฒ์งธ๋ก ์คํํ๋ฉด ๋ํผ๊ฐ ์ด๋ฏธ ์ ์ธ๋์ด ์๊ธฐ ๋๋ฌธ์ ํ ๋ฒ๋ง ์๋ํฉ๋๋ค.
๋์ html์ ์ธ์๋ก ์ฌ์ฉํ๋ ํจ์์์ ์์ ๋ชจ๋ ๊ฒ์ ๋ํํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ swal์ ์ง์ ํธ์ถํ๋ ๋์ html๋ก ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋ฉ๋๋ค.
๋๋ ์ด๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ์๋ํ๊ณ ์์๋ค
var errors = "<ul class='error-list'><% @user.errors.full_messages.each do |message| %><li><%= message %></li><% end %></ul>";
swal({
title: "Error!",
content: errors,
icon: "error"
});
๋น์ ์ ์ด๊ฒ์ ์๋ํ ์ ์์ต๋๋ค:
(function() {
const wrapper = document.createElement('div');
wrapper.innerHTML = "<ul class='error-list'><% @user.errors.full_messages.each do |message| %><li><%= message %></li><% end %></ul>";
swal({
title: "Error!",
content: wrapper,
icon: "error"
});
})();
์๋ํ์ง ์์ผ๋ฉด ์ปจํ ์คํธ๊ฐ ๋ ํ์ํฉ๋๋ค. ๋ ๋ช ํํ ์๋ฅผ ๋ค์ด ์ฃผ์๊ฒ ์ต๋๊น?
@lionralfs ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด๊ฒ์ ์ ์๊ฒ ์ ํฉํ์ง ์์ต๋๋ค. ์ ๋ sweetalert2๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
@srikanthcx ์ฌ์ฉ์ ์ ์ HTML์์ ERB ํ ํ๋ฆฟ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒ ๊ฐ์ต๋๋ค. SweetAlert๋ ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ SweetAlert๋ ๊ทธ ํฌํฌ์์๋ ์๋ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ด ์๋ํ๋ ค๋ฉด ERB ์ฝ๋๋ฅผ ๋ค๋ฅธ HTML ์์๋ก ๋ ๋๋งํ ๋ค์ ์ด๋ฅผ Swal ๋ชจ๋ฌ๋ก ๋ณต์ ํด์ผ ํฉ๋๋ค.
@t4t5 ๋ด๊ฐ ํ๊ณ ์๋ ๊ฒ๊ณผ ๋๊ฐ์ต๋๋ค. js.erb ํ์ผ์์ ์๋ ์ฝ๋๋ฅผ ์ํํ๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ์ html ์ถ๋ ฅ์ ์ค ๊ฒ์ ๋๋ค. erb ์ฝ๋์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ๋ swal์ด html ์ฝ๋๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
var errors = "<ul class='error-list'><% @user.errors.full_messages.each do |message| %><li><%= message %></li><% end %></ul>";
swal({
title: "Error!",
content: errors,
icon: "error"
});
@srikanthcx ์๊ฒ ์ต๋๋ค . ์ด ๊ฒฝ์ฐ @lionralf์ ์๋ฃจ์
์ด ์ ๋๋ก ์๋ํด์ผ ํฉ๋๋ค. $ const wrapper = ...
var wrapper = ...
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์ฌ๋ผ์ ธ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์ ์ฝ๋ ๋ธ๋ก์ด ์ฌ๋ฌ ๋ฒ ํธ์ถ๋๋ ๊ฒ ๊ฐ์์. ์ด๊ฒ์ด ๋ด๊ฐ ๋ค์๊ณผ ๊ฐ์ ํจ์ ํธ์ถ๋ก ์ถ์ถํ๋ ๊ฒ์ ๊ถ์ฅํ ์ด์ ์ ๋๋ค.
function callSwalWithHTML(html) {
const wrapper = document.createElement('div');
wrapper.innerHTML = html;
swal({
title: "Error!",
content: wrapper,
icon: "error"
});
}
๊ทธ๋ฆฌ๊ณ swal(...)
callSwalWithHTML(...)
#$ ๋ก ๋ฐ๊ฟ๋๋ค.
์ฝ๋๊ฐ ์ฌ๋ฌ ๋ฒ ํธ์ถ๋๋ ์ด์ ์ ๋ํด ์ข ๋ ์์ธํ ๋ด์ฉ์ ์๊ณ ์ถ์์ต๋๋ค(๊ทธ๋ ์ง ์์ผ๋ฉด ์ wrapper is already defined
๋ผ๊ณ ํฉ๋๊น?)
์ด ํจํค์ง๋ฅผ ์ฌ์ฉํ์ญ์์ค. https://amjadiqbal.github.io/sweetalert/forms.html
๋น๋์ค ๊ฐ์ด๋ ํฌํจ
sweetalert์์ ์ต์ปค ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ??
์๋ ํ์ธ์ @Sudangadekar ์ด ์์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค. sweetalert, https://amjadiqbal.github.io/sweetalert/forms.html ๋ด๋ถ์ ๋ชจ๋ html์ ํฌํจํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ๊ฐ์ ๊ฒ์ด ํจ๊ณผ๊ฐ ์์๊น์?