Ember 1.13,在组件中按顺序排列类名
Ember 1.13, class names order in a component
我创建了一个简单的组件来从SVG精灵中呈现图标。这个组件应该有一个默认的CSS类来全局管理它的样式(.svg-icon)。此外,我希望有可能通过'class'属性通过类名添加一些依赖于上下文的样式。
JS:
App.SvgIconComponent = Ember.Component.extend
layoutName: 'components/svg-icon'
classNames: ['svg-icon']
tagName: 'svg'
attributeBindings: ['width', 'height', 'fill'],
width: 16
height: 16
fill: 'currentColor'
模板:
<use xlink:href="#svg-icon-{{name}}"/>
用法:
{{svg-icon name="facebook" class="social__icon" width="14" height="14"}}
HTML输出:<svg id="ember1012" width="14" height="14" fill="currentColor" class="social__icon ember-view svg-icon">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#svg-icon-facebook"></use>
</svg>
问题是Ember将我的默认类(.svg-icon)推到了类列表的末尾。但是,为了避免级联的一些问题,我需要在类列表的开头放置这个类(class="svg-icon social__icon ember-view")。有可能实现吗?
我知道,我可以用classNameBindings属性设置类名,但在这种情况下,我需要使用一些不同于'class'的属性。最好使用原生的'class'属性。
非常感谢。
试试这个,
{{svg-icon name="facebook" classNames="social__icon" width="14" height="14"}}
以上将工作,但它不使用类属性。所以它不符合你的要求。
但如果不符合您的要求,您可以尝试在init
方法中手动设置classNames。
init(){
this._super(...arguments);
console.log(' Classess ',this.get('classNames')); //You will get classNames, you can do rearrange the classNames array
this.get('classNames').unshiftObject('svg-icon'); //to force svg-icon to be first in classNames array.
}
Update1
上面的 init()不起作用。所以我认为classNames
值是最后添加的。首先使用本地class
是不可能的。但是对于你的要求
我知道,我可以设置类名与classNameBindings属性,但在这种情况下,我将需要使用一些属性不同于'class'
您可以为特定属性指定不同的类名。
{{my-component is_social__icon=false }}
和my-component.js
内部
classNameBindings:['is_social__icon:social__icon']
更新2
1)你也可以在classNameBindings
export default Ember.Component.extend({
classNameBindings: ['isEnabled:enabled:disabled'],
isEnabled: false
});
isEnabled
- true -那么它将包含enabled
类名isEnabled
- false -那么它将包含disabled
类名
2)你甚至可以指定只在false值时添加的类名。
classNameBindings: ['isEnabled::disabled'],
3)你可以指定多个属性
classNameBindings:['isSocialIcon':'social__icon','isActive':'selected']
可以为组件提供isSocialIcon
和isActive
属性的值。
{{my-component isSocialIcon=true isActive=(unless social.inactive) }}
如果isActive
被解析为true,那么它将添加social__icon selected
类到my-component。
参考:https://guides.emberjs.com/v1.13.0/components/customizing-a-components-element/#toc_customizing-class-names
- 从数组中删除重复条目,并在javascript中按顺序排列
- Javascript从数组中随机选择并按字母顺序排列
- 如何在php中按元素按字母顺序排列json文件
- 如何根据 js 中每个单词的第 n 个字母按字母顺序排列列表
- Javascript将生日按数组顺序排列
- 列出按字母顺序排列的 javascript 和字母标题
- 按字母顺序排列字符串
- 排列<p>使用jQuery按日期顺序排列的元素
- 确定字符串中的所有字母是否按JavaScript字母顺序排列
- 按数组顺序排列对象
- 按字母顺序排列列表
- 多个 ajax 异步不按顺序排列,需要同步行为
- 按数字顺序排列列表
- JavaScript 按字母顺序排列
- jQuery Rotator是按字母顺序排列的,我怎样才能在我的主页上随机化
- 按字母顺序排列 AngularJS 中对象保留键/值关联的选项
- 需要一个优化的解决方案来获取按字母顺序排列的记录集 javascript
- Jquery - 按顺序排列的 ajax 循环
- Javascript 如何创建按顺序排列数字的对象
- Mongodb文档没有按正确的顺序排列