2015-03-13 70 views
2

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

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

...但它会很好,如果我以某种方式绑定属性代替。

回答

2

{{ input type='text' required=required disabled=disabled }}作品就好

工作实例here

有一大堆可以绑定属性直接requireddisabled是包间的。见here

注意 @blackmind是正确的,如果你是从头开始做这件事,你需要做一些工作。幸运的是,TextSupport已经为您做了这项工作...... :)请参阅here

1

从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}}>