2

我正在将 Ember 1.5 Handlebars 应用程序迁移到当前稳定的 Ember 和 HTMLBars,似乎绑定的控制器属性必须返回"disabled"null使用“禁用”DOM 属性按预期工作。

<button disabled={{isDisabled}}> 

在 HandlebarsisDisabled中,属性是一个布尔值,一切正常。

在 HTMLBars 中,我似乎需要:

Ember.Controller.extend({
  isDisabled: function() {
    if(this.get('itemSelected')){
      return null;
    } else {
      return 'disabled';
    }
  }.property('itemSelected')
});

这个对吗?这当然会带来一个问题,因为布尔属性应该是应用程序其余部分中的布尔值,所以为了让它按预期工作,我需要添加一个额外的计算属性来驱动“布尔- ish" 带有"string"/null值集的 DOM 属性。

有没有其他人遇到过这个,或者“检查”的相关问题?

使用:
Ember 1.11.3 + HTMLBars
ember-cli 0.2.3

4

2 回答 2

1

我刚遇到同样的事情,我找到了一个更适合我的解决方案。

<button disabled={{if itemSelected true null}}>a button<button>
于 2015-11-11T22:05:55.350 回答
0

我通过使用绑定助手想出了一个合理的解决方案。

// ../helpers/boolean-disabled.js

import Ember from 'ember';

export function booleanDisabled(params/*, hash*/) {
  var disabled = params[0];
  if(disabled) {
    return 'disabled';
  } else {
    return null;
  }
}

export default Ember.HTMLBars.makeBoundHelper(booleanDisabled);

然后在模板中

<button disabled="{{boolean-disabled itemSelected}}">
于 2015-05-20T20:40:44.930 回答