1

拡張中のビューに記述されている機能を持つビューを作成しようとしていますが、クラス名が異なります。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']
});
4

2 に答える 2

4

ではEmber.ViewclassNames連結されたプロパティであるため、追加するプロパティはスーパー クラスの値と連結されます。

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"ます。

JSBin の例

于 2013-05-12T21:30:34.693 に答える
2

この汚い小さな回避策は私が望むものを与えてくれますが、これを説明するより良い方法やリソースを知っている場合はお知らせください!

Resume.ExpTypesView = Resume.NavView.extend({
  //classNames:['nav','nav-pills'],
  init: function(){
    this.set('classNames', ['nav','nav-pills']);
  }
});
于 2013-05-12T21:22:46.263 に答える