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

时间:2015-11-19 09:47:08

标签: ember.js htmlbars

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

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

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

注意:

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

1 个答案:

答案 0 :(得分:5)

可以将{{mut}}{{action}}帮助器结合使用:

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

Working demo.

您可以在此blog post中详细了解此特定用例(mut转换为函数)。

说明:

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

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

如果condition的计算结果为false,那么我们会通过不执行任何操作的操作 - 我们使用类似于变通方法的内容:(action (mut undefProp))