Я пытался использовать HTMX для добавления новой строки к таблице, которую я отображаю. Я использую атрибут hx-swap-oob, чтобы я мог перерисовать форму и обмениваться внутри таблицы новую строку. Проблема в том, что я все вставил, где форма, поэтому форма верна, но новая строка появляется без метки ниже формы. < /P>
Вот это HTML -код: < /p>
Основной шаблон: < /p>
{{ define "allUsers" }}
{{ template "form" .Form }}
{{ template "contacts" .Data }}
{{ end }}
< /code>
Форма: < /p>
{{ define "form" }}
Name:
Email:
Password:
{{ if .Errors }}
{{ .Errors.msg }}
{{end}}
CreateUser
{{ end }}
< /code>
Контакты: < /p>
{{ define "contacts" }}
Users
ID
Name
Age
Email
-
{{ range .Contacts }}
{{ template "contact" . }}
{{ end }}
{{ end }}
< /code>
Это то, что я пытаюсь отображать с помощью HTMX-swap-oob: < /p>
{{ define "contact" }}
{{ .ID }}
{{ .Name }}
{{ .Age }}
{{ .Email }}
hx-target="#contact-{{ .ID }}">
{{ end }}
< /code>
И здесь я отправляю данные из бэкэнда после отправки формы: < /p>
{{ define "form-and-oob" }}
{{ template "form" .Form }}
{{ template "contact" .Data.Contact }}
{{ end }}
< /code>
И вот мой обработчик, написанный в Go, используя Echo: < /p>
func (s *ServerBU) handlePost(c echo.Context) error {
name := c.FormValue("name")
email := c.FormValue("email")
password := c.FormValue("password")
if !s.EmailIndex.IsDuplicate(email) {
log.Printf("Email %s already in use\n\n\n", email)
form := NewForm()
form.Values["name"] = name
form.Values["email"] = email
form.Values["password"] = password
form.Errors["msg"] = "Email already registered."
return c.Render(422, "form", form)
}
id, newUser, err := NewUser(name, "default", email, password, 42069)
if err != nil {
form := NewForm()
form.Values["name"] = name
form.Values["email"] = email
form.Values["password"] = password
form.Errors["msg"] = "Some error. Please try again."
return c.Render(422, "form", form)
}
s.EmailIndex.Put(email, id.String())
s.Storage.Put(id.String(), *newUser)
p := NewPage(*NewForm(), Data{Contact: *newUser})
return c.Render(200, "form-and-oob", p)
}
< /code>
Я попытался использовать прямую цель для , но я все еще получаю те же результаты. Также просто отправляя контакт, без перерисовывания формы, но новая строка все еще проходит под формой. Я просто не могу найти способ нацеливаться на правильную вещь, это просто не движется из области под формой! Я не делаю дело, где проблема, но я выразил ее, потому что, возможно, это «htmx: load» делает то, чего я не ожидаю. < /P>
document.addEventListener("htmx:load", function () {
document.addEventListener("htmx:beforeSwap", function (evt) {
if (evt.detail.xhr.status === 422) {
evt.detail.shouldSwap = true;
evt.detail.isError = false;
}
});
});
< /code>
И здесь у меня есть сгенерированный HTML перед запросом сообщения: < /p>
Name:
А после, я не положил внутреннюю часть #display, но это нетронуто: < /p>
6a9cdee7-e719-11ef-9452-5811223c9280
asd
42069 qweasdasd
Подробнее здесь: https://stackoverflow.com/questions/794 ... -with-htmx
Обмен в элементах в таблице с HTMX ⇐ Html
Программисты Html
1739151733
Anonymous
Я пытался использовать HTMX для добавления новой строки к таблице, которую я отображаю. Я использую атрибут hx-swap-oob, чтобы я мог перерисовать форму и обмениваться внутри таблицы новую строку. Проблема в том, что я все вставил, где форма, поэтому форма верна, но новая строка появляется без метки ниже формы. < /P>
Вот это HTML -код: < /p>
Основной шаблон: < /p>
{{ define "allUsers" }}
{{ template "form" .Form }}
{{ template "contacts" .Data }}
{{ end }}
< /code>
Форма: < /p>
{{ define "form" }}
Name: [i]
Email:
Password:
{{ if .Errors }}
{{ .Errors.msg }}
{{end}}
CreateUser
{{ end }}
< /code>
Контакты: < /p>
{{ define "contacts" }}
Users
ID
Name
Age
-
{{ range .Contacts }}
{{ template "contact" . }}
{{ end }}
{{ end }}
< /code>
Это то, что я пытаюсь отображать с помощью HTMX-swap-oob: < /p>
{{ define "contact" }}
{{ .ID }}
[b]{{ .Name }}[/b]
{{ .Age }}
{{ .Email }}
[/i]
[i] hx-target="#contact-{{ .ID }}">[/i]
{{ end }}
< /code>
И здесь я отправляю данные из бэкэнда после отправки формы: < /p>
{{ define "form-and-oob" }}
{{ template "form" .Form }}
{{ template "contact" .Data.Contact }}
{{ end }}
< /code>
И вот мой обработчик, написанный в Go, используя Echo: < /p>
func (s *ServerBU) handlePost(c echo.Context) error {
name := c.FormValue("name")
email := c.FormValue("email")
password := c.FormValue("password")
if !s.EmailIndex.IsDuplicate(email) {
log.Printf("Email %s already in use\n\n\n", email)
form := NewForm()
form.Values["name"] = name
form.Values["email"] = email
form.Values["password"] = password
form.Errors["msg"] = "Email already registered."
return c.Render(422, "form", form)
}
id, newUser, err := NewUser(name, "default", email, password, 42069)
if err != nil {
form := NewForm()
form.Values["name"] = name
form.Values["email"] = email
form.Values["password"] = password
form.Errors["msg"] = "Some error. Please try again."
return c.Render(422, "form", form)
}
s.EmailIndex.Put(email, id.String())
s.Storage.Put(id.String(), *newUser)
p := NewPage(*NewForm(), Data{Contact: *newUser})
return c.Render(200, "form-and-oob", p)
}
< /code>
Я попытался использовать прямую цель для , но я все еще получаю те же результаты. Также просто отправляя контакт, без перерисовывания формы, но новая строка все еще проходит под формой. Я просто не могу найти способ нацеливаться на правильную вещь, это просто не движется из области под формой! Я не делаю дело, где проблема, но я выразил ее, потому что, возможно, это «htmx: load» делает то, чего я не ожидаю. < /P>
document.addEventListener("htmx:load", function () {
document.addEventListener("htmx:beforeSwap", function (evt) {
if (evt.detail.xhr.status === 422) {
evt.detail.shouldSwap = true;
evt.detail.isError = false;
}
});
});
< /code>
И здесь у меня есть сгенерированный HTML перед запросом сообщения: < /p>
Name:
А после, я не положил внутреннюю часть #display, но это нетронуто: < /p>
6a9cdee7-e719-11ef-9452-5811223c9280
[b]asd[/b]
42069 qweasdasd
Подробнее здесь: [url]https://stackoverflow.com/questions/79425188/swapping-in-elements-in-a-table-with-htmx[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия