说我正在对Ember.View进行子类化(“扩展”)以创建My.Widget。我希望每个My.Widget子类都有一个名为“XMLTag”的“类属性”,可用于从XML文档中反序列化。
My.Widget = Ember.View.extend( { /*...*/ });
My.MySubWidget = My.Widget.extend( { /*...*/ });
My.MySubWidget.XMLTag = 'MySubWidget';
这是正确的方法吗?或者我可以在“extend()”中使用某种技巧来指定它的类属性吗?
答案 0 :(得分:2)
扩展类级变量或方法的正确方法是reopenClass(),例如:
My.SubWidget.reopenClass({
xmlTag: 'mysubwidget'
});
如果您进一步扩展该类,只需将该属性添加到My.SubWidget将不。
答案 1 :(得分:0)
您可以通过classNames
上的Ember.View
属性添加类:此属性是一个字符串数组,添加到具体视图的class
属性中。由于它是一个所谓的连接属性,子类不会覆盖超类的classNames
,而是扩展它 - 所以超类类名不会被覆盖。
我创建了一个示例,请参阅http://jsfiddle.net/pangratz666/xMBQ4/:
My.Widget = Ember.View.extend({
classNames: 'my-widget'.w(),
didInsertElement: function(){
var classes = this.$().attr('class');
console.log(classes);
}
});
My.MySubWidget = My.Widget.extend({
classNames: 'my-sub-widget XMLTag'.w()
});
My.MySubWidget.create({
classNames: 'class1 class2'.w(),
templateName: 'mySubWidget'
}).append();
添加My.MySubWidget
视图时会打印以下内容:ember-view my-widget my-sub-widget XMLTag class1 class2
。