我在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/