Ember无法将参数传递给操作

时间:2018-05-16 09:12:27

标签: javascript html ember.js handlebars.js

无论我投入的价值是什么,或者我将其更改为onclick =" {{action ...}}"它始终给我价值未定义。我真的尝试过我能想到的每一种组合。我甚至使用 a 标记来查看是否会保存该值。我根本不确定如何获取此图片网址。

这是在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.log("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()
}

并且我已经测试过它是否能够运行该功能并且它确实显示并且图像确实显示出来也不是问题。

我的问题是,是否可以将参数传递给此函数。如果没有,是否有解决方法?我应该使用辅助功能吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

函数参数列表是索引列表,而不是键值集合。因此,将参数作为键值对传递是错误的。相反,应该在操作名称后面直接给出辅助对象,作为引用或文字值的空格分隔列表:

<img {{action "selectGIF" gif}} />

来源:https://guides.emberjs.com/v3.0.0/templates/actions/#toc_action-parameters

此页面还显示可以为操作助手提供键值对,但这些是辅助程序执行的参数,而不是实际操作的执行。