【问题标题】:Ember + HTMLBars: "boolean" bound attributes are not booleansEmber + HTMLBars:“布尔”绑定属性不是布尔值
【发布时间】:2015-08-02 04:38:30
【问题描述】:

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

<button disabled={{isDisabled}}> 

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

在 HTMLBars 中似乎我需要:

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

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

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

使用:
Ember 1.11.3 + HTMLBars
ember-cli 0.2.3

【问题讨论】:

    标签: ember.js htmlbars


    【解决方案1】:

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

    // ../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}}">
    

    【讨论】:

      【解决方案2】:

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

      <button disabled={{if itemSelected true null}}>a button<button>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-28
        相关资源
        最近更新 更多