我在EmberJS代码和讨论中看到{没有提供参考}以下内容:
route.js
setupController: function (controller, model) {
this._super(controller,model);
// More code
},
this._super(controller,model);
在这里做什么电话?
我什么时候需要使用这种类型的电话?
只是在这里学习,因为我的鼻子从Ember学习曲线中消失了。
答案 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);
}
答案 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/