Он постоянно дает мне значение undefined, независимо от того, какое значение я ввожу в значение или если я изменю его на onclick = "{{action ...}}". Я буквально перепробовал все возможные комбинации. Я даже использовал теги а, чтобы посмотреть, сохранит ли это значение. Я совершенно не уверен, как мне получить этот URL-адрес изображения.
Это в ember, и я использовал комбинацию {{action "function name"}} в других частях моего кода, но это ЕДИНСТВЕННАЯ часть, которая не будет работать.
Файл шаблона
<div class = "gif-display">
{{#each giffy as |gif index|}}
<img width = "150px" {{action "selectGIF" value=gif}} src = {{gif.images.original.url}}>
{{/each}}
</div>
Класс контроллера
selectGIF: function (num) {
console.info("num", num)
let newPost = this.store.createRecord('post', {
email: this.get("session.currentUser.email"),
body: `${gifs[num].images.original.url}`,
timestamp: new Date().getTime(),
image: true
});
gifs = ''
newPost.save()
}
И ДА, я проверил, запускает ли он эту функцию, и она работает, и изображения появляются, так что это тоже не проблема.
Мой вопрос: можно ли передать параметр в эту функцию. Если нет, есть обходной путь? Стоит ли использовать вспомогательную функцию?
Спасибо!
@JeffreyWesterkamp Вы должны отправить свой комментарий в качестве ответа, чтобы его можно было принять как правильный ответ.
@casafred Спасибо, я только что сделал.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Список аргументов функции - это индексированный список, а не набор значений ключа. Из-за этого неправильно передавать аргументы в виде пар ключ-значение. Вместо этого аргументы должны быть переданы помощнику непосредственно после имени действия в виде разделенного пробелами списка ссылок или литеральных значений:
<img {{action "selectGIF" gif}} />
Источник: https://guides.emberjs.com/v3.0.0/templates/actions/#toc_action-parameters
На этой странице также показано, что пары ключ-значение могут быть переданы помощнику действия, однако это параметры для выполнения помощника, а не фактического выполнения действия.
directive - это не тлеющая концепция. action - это helper.
@lux Я обновил свой ответ, чтобы он соответствовал терминологии Ember.
Попробуйте
{{ action "selectGIF" gif }}. Подробнее о Передача параметров действиям в шаблонах.