我正在尝试创建具有在am扩展视图中描述的功能的视图,但具有不同的类名。发生的事情是ExpTypesView类是['nav','nav-pills'] 和 ['nav','nav-tabs']。如何设置它以便替换在NavView中设置的类名?
Resume.NavView = Em.View.extend({
tagName: 'ul',
classNames: ['nav','nav-tabs'],
currentPathDidChange: function(){
Ember.run.next( this, function() {
$("ul li:has(>a.active)").addClass('active');
$("ul li:not(:has(>a.active))").removeClass('active');
});
}.observes('controller.currentPath')
});
Resume.ExpTypesView = Resume.NavView.extend({
classNames:['nav','nav-pills']
});
答案 0 :(得分:4)
在Ember.View
中,classNames
是concatenated property,因此您添加的属性将与超类值连接。
您可以使用classNameBindings
在超类和后代中设置类型。
App.NavView = Em.View.extend({
tagName: 'ul',
classNames: ['nav'],
classNameBindings: ['type'],
type: 'nav-tabs',
currentPathDidChange: function(){
Ember.run.next( this, function() {
$("ul li:has(>a.active)").addClass('active');
$("ul li:not(:has(>a.active))").removeClass('active');
});
}.observes('controller.currentPath')
});
App.ExpTypesView = App.NavView.extend({
type: 'nav-pills',
});
这使得课程class="ember-view nav nav-tabs"
和class="ember-view nav nav-pills"
。
答案 1 :(得分:2)
这个肮脏的小解决方案正在给我我想要的东西,但如果你知道更好的方法或解释这个的任何资源,请告诉我!
Resume.ExpTypesView = Resume.NavView.extend({
//classNames:['nav','nav-pills'],
init: function(){
this.set('classNames', ['nav','nav-pills']);
}
});