组件属性绑定是渲染字符串

时间:2014-06-12 22:53:46

标签: ember.js

我正在尝试为组件attr设置数据绑定,当我这样做时,我的属性返回一个字符串。我有一个自定义组件类:

App.EditableTextComponent = Ember.Component.extend({
  attributeBindings: ['contenteditable'],

  isEditable: true
});

而且,我的车把模板:

<span class="editable-text" {{bind-attr contenteditable=isEditable}}>{{content}}</span>

每当我渲染此模板时,如果isEditable为true,它将呈现:contenteditable="contenteditable"而不是contenteditable,如此处http://emberjs.com/guides/templates/binding-element-attributes/中的示例所示。

如果我将isEditable属性设置为字符串“true”,我可以使用此示例,但这似乎不正确,因为它应该是在其他地方使用的布尔值。如何在不将属性设置为字符串的情况下使此数据绑定工作?

1 个答案:

答案 0 :(得分:1)

App.EditableTextComponent = Ember.Component.extend({
  attributeBindings: ['contenteditable'],

  isEditable: true,

  contenteditable: function() {
    return this.get('isEditable') ? 'true' : 'false';
  }.property('isEditable')
});

用法:

{{editable-text isEditable=true}}
{{editable-text isEditable=false}}