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

How to bind action only under certain condition [Ember.js]

我只是想知道,有没有什么办法可以达到下面的目的。

<button class="{{unless publishable "button-disabled"}}" {{if publishable (action "publish")}}>Publish</button>

当然可以在action方法中完成。我只是认为如果可以在模板中完成它可以使代码更简洁。

注意:

可以使用 {{mut}} in combination with {{action}} 助手:

<button {{action (if publishable 'publish' (action (mut undefProp)))}}>Publish</button>

Working demo.

您可以在此 blog post.

中阅读有关此特定用例(mut 转换为函数)的更多信息

解释:

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

如果条件评估为真,我们 return 'publish' 这只是操作名称。

如果条件评估为 false,那么我们将传递不执行任何操作的操作 - 我们使用类似解决方法的方法:(action (mut undefProp)).