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

如何仅在特定条件下绑定操作[Ember.js],ember.js,htmlbars,Ember.js,Htmlbars,我只是想知道,有没有什么方法可以达到下面的目的 <button class="{{unless publishable "button-disabled"}}" {{if publishable (action "publish")}}>Publish</button> 发布 当然,这可以用行动的方法来完成。我只是认为,如果可以在模板中完成,就可以让代码更干练 注: 我知道上面的代码不起作用。这只是为了举例说明 我知道按钮可以使用disabled属性来实现这一点。在

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

<button class="{{unless publishable "button-disabled"}}" {{if publishable (action "publish")}}>Publish</button>
发布
当然,这可以用行动的方法来完成。我只是认为,如果可以在模板中完成,就可以让代码更干练

注:

  • 我知道上面的代码不起作用。这只是为了举例说明
  • 我知道按钮可以使用
    disabled
    属性来实现这一点。在我最初的作品中,它实际上是一个
    ,没有禁用
    。我需要将其保留为
    标记,以用于css目的
  • 我希望保持在页面上的按钮,无论它是否被禁用。这是一种网页惯例。在这种情况下,当按钮被禁用时,用户将知道他一定遗漏了什么
可以与助手一起使用:

发布

在本文中,您可以阅读有关此特定用例(
mut
converts to function)的更多信息

说明:

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

如果条件的计算结果为true,我们将返回
'publish'
,这只是操作名称

如果条件的计算结果为false,则我们传递的操作将不起任何作用-我们使用类似于解决方法的方法:
(操作(mut undeprop))

可以与帮助器结合使用:

发布

在本文中,您可以阅读有关此特定用例(
mut
converts to function)的更多信息

说明:

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

如果条件的计算结果为true,我们将返回
'publish'
,这只是操作名称


如果条件的计算结果为false,那么我们将传递一个不起任何作用的操作-我们使用类似于解决方法的方法:
(操作(mut undeprop))

如果按钮不可发布,隐藏按钮是否更有意义?@Kitler我更新了我的问题。希望这对你有意义。如果按钮不可发布,隐藏按钮不是更有意义吗?@Kitler我更新了我的问题。希望这对你有意义。你能解释更多关于
(mut undeprop)
的事情吗?或者你能给我一个链接来阅读更多关于它的信息吗?我不知道这一点,也无法从ember网站上找到任何引用。那么这里的
undeprop
是什么?它是否只是表示控制器/组件中的未定义属性?它本身在Ember.js中没有特殊意义,对吗?
undeprop
只是随机的未定义属性。是的,它没有特别的意义。它只是用来创造一个没有任何作用的模仿动作。干杯!现在非常清楚了。这是一种变通方法吗?我只是好奇为什么它不能像
{{action(如果可以发布'publish')}}
那样工作,这样可读性更好。在你看来,这是可能的吗。你能解释更多关于
(mut undeprop)
的事情吗?或者你能给我一个链接来阅读更多关于它的信息吗?我不知道这一点,也无法从ember网站上找到任何引用。那么这里的
undeprop
是什么?它是否只是表示控制器/组件中的未定义属性?它本身在Ember.js中没有特殊意义,对吗?
undeprop
只是随机的未定义属性。是的,它没有特别的意义。它只是用来创造一个没有任何作用的模仿动作。干杯!现在非常清楚了。这是一种变通方法吗?我只是好奇为什么它不能像
{{action(如果可以发布'publish')}}
那样工作,这样可读性更好。在你看来,这种增强是可能的吗?
<button {{action (if publishable 'publish' (action (mut undefProp)))}}>Publish</button>