3

在 Ember 的输入助手中,如何根据条件显示/隐藏属性?例如,假设我想显示required="required"是否isEditable为真,disabled="disabled"否则。目前我有这样的事情:

{{#if isEditable}}
    {{input value=model.name required="required"}}
{{else}}
    {{input value=model.name disabled="disabled"}}
{{/if}}

...但是如果我以某种方式绑定属性会很好。

4

2 回答 2

2

来自 EmberJS 网站

默认情况下,视图助手不接受数据属性。例如

{{#link-to "photos" data-toggle="dropdown"}}Photos{{/link-to}}

{{input type="text" data-toggle="tooltip" data-placement="bottom" title="Name"}}

呈现以下 HTML:

<a id="ember239" class="ember-view" href="#/photos">Photos</a>

<input id="ember257" class="ember-view ember-text-field" type="text" title="Name">

有两种方法可以启用对数据属性的支持。一种方法是在视图上添加属性绑定,例如特定属性的 Ember.LinkView 或 Ember.TextField:

Ember.LinkView.reopen({
  attributeBindings: ['data-toggle']
});

Ember.TextField.reopen({
  attributeBindings: ['data-toggle', 'data-placement']
});

现在,上面相同的车把代码呈现以下 HTML:

<a id="ember240" class="ember-view" href="#/photos" data-toggle="dropdown">Photos</a>

<input id="ember259" class="ember-view ember-text-field" 
       type="text" data-toggle="tooltip" data-placement="bottom" title="Name">

或者您可以重新打开视图

Ember.View.reopen({
  init: function() {
    this._super();
    var self = this;

    // bind attributes beginning with 'data-'
    Em.keys(this).forEach(function(key) {
      if (key.substr(0, 5) === 'data-') {
        self.get('attributeBindings').pushObject(key);
      }
    });
  }
});

我通常会执行以下操作

<input type="checkbox" {{bind-attr disabled=isAdministrator}}>
于 2015-03-13T17:31:26.790 回答
2

{{ input type='text' required=required disabled=disabled }}工作得很好

这里的工作示例

有一大堆属性可以直接绑定,required并且disabled在包中。看这里

注意@blackmind 是正确的,如果您要从头开始执行此操作,则需要做一些工作。不过幸运的是,TextSupport已经为您完成了工作...... :) 见这里

于 2015-03-13T17:44:38.033 回答