什么`this._super(控制器,模型)`在Ember路由器中意味着什么?

时间:2015-01-19 16:26:08

标签: javascript ember.js

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

代码

route.js

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

问题

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

我什么时候需要使用这种类型的电话?

只是在这里学习,因为我的鼻子从Ember学习曲线中消失了。

2 个答案:

答案 0 :(得分:5)

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

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

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

setupController: function (controller, model) {
  // Call _super for default behavior
  this._super(controller, model);

  // Implement your custom setup after
  controller.set('showingPhotos', true);
}

Here is the default implementation of setupController.

答案 1 :(得分:1)

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/