Ember 路由器中的“this._super(控制器,型号)”是什么意思?

What does the `this._super(controller,model)` mean in an Ember Router?

本文关键字:型号 是什么 意思 控制器 路由器 this super Ember      更新时间:2023-09-26

我在EmberJS代码和讨论中看到{未提供参考}以下内容:

法典

路线.js

setupController: function (controller, model) {
    this._super(controller,model);
    // More code
},

问题

呼唤this._super(controller,model);在这里做什么?

何时需要使用此类呼叫?

只是想在这里学习,因为我的鼻血来自余烬学习曲线。

正如@RyanHirsch所说,this._super调用该方法的父实现。

setupController的情况下,调用this._super(controller,model)会将控制器的"model"属性设置为传入的模型。这是默认实现。因此,在正常情况下我们不需要实现此方法。

现在,当我们想要为控制器设置其他数据时,我们通常会覆盖它。在这些情况下,我们需要默认行为和我们的自定义内容。所以我们称之为_super方法。然后做我们的事情。

setupController: function (controller, model) {
  // Call _super for default behavior
  this._super(controller, model);
  // Implement your custom setup after
  controller.set('showingPhotos', true);
}

下面是 setupController 的默认实现。

this._super(controller, model);调用该方法的父实现(即您要扩展的对象,因此Ember.Route)

http://emberjs.com/guides/object-model/classes-and-instances/

"定义子类时,你可以重写方法,但仍然通过调用特殊的_super()方法来访问父类的实现"

http://emberjs.com/guides/object-model/reopening-classes-and-instances/