Ember View继承问题

时间:2014-04-03 09:02:44

标签: javascript jquery ember.js

我正在将此视图逻辑继承实现到EmberJ中,我想问两个问题。

App.MyBaseView = Ember.View.extend({
  didInsertElement: function(){
    // shared logic
  }.on('didInsertElement')
});

App.FirstSpecificView = App.MyBaseView.extend({

  didInsertElement: function(){
    // this views specific logic
  }.on('didInsertElement')
});

App.SecondSpecificView = App.MyBaseView.extend({

  didInsertElement: function(){
    // this views specific logic
  }.on('didInsertElement')
});

" .on(didInsertElement)"有什么用?

如何使用" onDidInsert"和" didInsertElement"不同?

1 个答案:

答案 0 :(得分:2)

我不是那么精通Ember JS,现在只使用它3个月,但首先......我从来没有见过这样的语法。我的意思是:

App.MyBaseView = Ember.View.extend({
  didInsertElement: function(){
    // shared logic
  }.on('didInsertElement')  //this :D
});

不需要这个'on('eventName')'。您只需将属性句柄添加到属性即可。所以它会像:

App.MyBaseView = Ember.View.extend({
  didInsertElement: function(){
    // shared logic
  }
});

尽管如此,我假设你想从子类中的超类中调用方法。然后像这样使用它:

  App.MyBaseView = Ember.View.extend({
  didInsertElement: function(){
    // shared logic
  }
});

App.FirstSpecificView = App.MyBaseView.extend({    
  didInsertElement: function(){
    this._super();  //this should call superclass method
    // this views specific logic
  }
});

App.SecondSpecificView = App.MyBaseView.extend({  
  didInsertElement: function(){
    this._super();    //this should call superclass method
    // this views specific logic
  }
});