Ответ 1
Изменить: это, как известно, проблема. Вот исправление:
In brunch-config.js
autoRequire: {
"js\\app.js": ["web/static/js/app"]
}
Я использовал Phoenix, созданный в gen.HTML, для создания простого представления, но он не работает
<%= link "Delete", to: event_path(@conn, :delete, event), method: :delete, data: [confirm: "Are you sure?"], class: "btn btn-danger btn-xs" %>
И на странице он выглядит так, как предполагается, но просто добавляет # к адресу
Сгенерированная структура:
<form action="/event/1" class="link" method="post">
<input name="_method" type="hidden" value="delete">
<input name="_csrf_token" type="hidden" value="BwUSGQcDO1MwPzw0HBgqLnshHn8HNgAAnCTjuMt0viFshobX4XM/dQ==">
<a class="btn btn-danger btn-xs" data-confirm="Are you sure?" data-submit="parent" href="#">Delete</a>
</form>
Мне не удалось импортировать js-сортировку? Я также могу загрузить этот браузер:
//This is being downloaded as phoenix_html.js
// Although ^=parent is not technically correct,
// we need to use it in order to get IE8 support.
var elements = document.querySelectorAll('[data-submit^=parent]')
var len = elements.length
for (var i=0; i<len; ++i) {
elements[i].addEventListener('click', function(event){
var message = this.getAttribute("data-confirm")
if(message === null || confirm(message)){
this.parentNode.submit()
};
event.preventDefault()
return false
}, false)
}
Изменить: это, как известно, проблема. Вот исправление:
In brunch-config.js
autoRequire: {
"js\\app.js": ["web/static/js/app"]
}
В то время как не конкретное решение проблемы с OP, эта ошибка также может возникнуть, если вы разместите
<script src="<%= static_path(@conn, "/js/app.js") %>"></script>
в неправильном месте в app.html.eex
. (Например, внутри <head>
, а не в конце тела)
Для кого-то другого, у кого это было, у меня была совершенно другая проблема, которая проявилась в том же духе, выйдет здесь, если это поможет:
Оказывается, я случайно удалил import "phoenix_html"
из файла app.js, приняв его за то, что он является частью сгенерированного шаблона, добавив его обратно, исправил мою проблему.
Недавно у меня была такая же проблема, оказалось, что я случайно удалил <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
из моего файла layout.html.eex
. Добавив его, исправленная проблема.
Для более поздних версий Phoenix, если вы просмотрите файл app.js в priv/static/js/app.js
, вы увидите комментарий, который ссылается на ссылку на исходный файл github js. Этот небольшой фрагмент Javascript содержит важный код, гарантирующий правильную работу хедлайнеров delete
.