如何在特定条件下绑定动作[Ember.js]

gle*_*986 1 ember.js htmlbars

我只是想知道,有什么方法可以实现以下目的.

<button class="{{unless publishable "button-disabled"}}" {{if publishable (action "publish")}}>Publish</button>
Run Code Online (Sandbox Code Playgroud)

当然,它可以用动作方法完成.我认为如果可以在模板中完成,它可以使代码更干燥.

注意:

  • 我知道上面的代码不起作用.它仅用于目的说明.
  • 我知道按钮可以使用disabled属性来实现这一点.在我原来的作品中,它实际上是一个<a/>没有的作品disabled.我需要将它作为<a/>css用途的标记.
  • 我希望将按钮保留在页面中,无论它是否被禁用.这是一种网页惯例.在这种情况下,用户将知道在禁用按钮时他必须丢失某些内容.

Dan*_*mak 5

可以{{mut}}与{{action}}帮助者结合使用:

<button {{action (if publishable 'publish' (action (mut undefProp)))}}>Publish</button>
Run Code Online (Sandbox Code Playgroud)

工作演示.

您可以mut在此博客文章中阅读有关此特定用例(转换为函数)的更多信息.

说明:

我们使用动作助手和动作,我们将根据if条件计算传递给助手的动作.

如果condition的计算结果为true,则返回'publish'简单的动作名称.

如果condition的计算结果为false,那么我们通过的动作什么都不做 - 我们使用类似的解决方法:(action (mut undefProp)).

  • 干杯! 现在它非常清楚.这是一种解决方法吗?我只是好奇为什么它不能用作`{{action(如果可发布'发布')}}`,它更具可读性.在您看来,这种增强是否可行? (2认同)