templates - 如果 ArrayController 不包含 Ember 中的模型,则使用 bindAttr 禁用按钮

标签 templates binding ember.js

我有一个包含按钮的模板:

<button {{action clearAll}} >Clear All</button>

模板的 Controller 是一个ArrayController。如果 ArrayController 的内容属性包含零项,我希望禁用该按钮。

最佳答案

答案是使用 computed properties 。计算属性允许您基于 Controller 状态而不是原始 bool 属性进行计算(本质上是创建一个由多个属性或不同类型的属性支持的 getter)。

为了使该函数正确触发绑定(bind),您需要声明该函数所依赖的属性 - 如果修改了哪些属性应该导致更新。你可以使用:`.property('content.length')'。在这种情况下,函数依赖于单个属性,但它也可以依赖于多个属性。

在模板中:

<button {{action clearAll}} {{bindAttr disabled="anyEntries"}}>Clear All</button>

在 Controller 中:

  anyEntries: function() {
    return this.get('content.length') == 0;
  }.property('content.length')

关于templates - 如果 ArrayController 不包含 Ember 中的模型,则使用 bindAttr 禁用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15551142/

相关文章:

templates - Joomla 3 模板覆盖插件

python - 我应该如何在我的模板之间共享代码 ("modules")?

wpf - 从 View MVVM WPF在 View 模型中定义的访问枚举类型

javascript - Ember.js Controller 和 View 绑定(bind)(ember.js 方式...)

c++ - 如何使 C++ 链接占用更少的内存

html - landingspage 的 CSS 不断被覆盖?

.net - 有没有一种方法可以声明 Property/DependencyProperty 在绑定(bind)时默认使用 TwoWay 绑定(bind)?

c# - UWP x :Bind with time

javascript - 模型加载后 Ember.js 不重新渲染模板

javascript - Ember : filter model by text field