2016-01-24 55 views
4

我是新来的灰烬,我下面包含的代码组件教程:classNameBindings到底在做什么?

export default Ember.Component.extend({ 
    tagName: 'li', 
    classNameBindings: ['editing'], 
    editing: false, 
    actions: { 
    editTodo() { 
     this.toggleProperty('editing'); 
    } 
    } 
}); 

我不明白什么classNameBindings做。从文档中我了解到,classNameBindings is a list of properties of the view to apply as class names,但我也有组件editing属性。这个属性的存在是如何影响创建class names的这个过程的?

谢谢你:-)

+0

这里的解释看起来完全一致:http://emberjs.com/api/classes/Ember.View.html。 – 2016-01-24 15:26:35

回答

15

classNameBindings任何帮助有两种使用模式。您可以打开/关闭课程,也可以根据属性的值添加/省略课程。

切换上断开类:

export default Ember.Component.extend({ 
    classNameBindings: ['editing'] 
}); 
  • this.set('editing', true)添加editing CSS类元素
  • this.set('editing', false)从元件

添加/省略去除editing CSS类根据物业价值分类:

export default Ember.Component.extend({ 
    classNameBindings: ['editing:is-editing:not-editing'] 
} 
  • this.set('editing', true)增加了is-editing CSS类元素
  • this.set('editing', false)添加not-editing CSS类元素

您可以省略真([editing::not-editing])或假([editing:is-editing])分公司。有关更多详细信息,请参阅Customizing a Component's Element guideclassNameBindings API文档。

+0

很好的解释,那就是我正在寻找 – SuperManEver

+0

所以,只是为了说清楚。在我的例子中,'editTodo'事件处理程序从'li'元素中添加或删除编辑类。这是正确的? – SuperManEver

+2

值得指出的是'classNameBindings:['isEditing']'添加或删除了名为'is-editing'的类。 – 2016-01-24 15:27:21

相关问题