创建对象时出现this._super()问题

时间:2013-03-15 09:26:24

标签: ember.js

在新的EmberRC1版本中,我们似乎无法从创建的对象中调用超类方法。我有一些标准的mixins和视图,我用它来创建或扩展到其他一些对象。我有一些方法覆盖,但我仍然需要执行超级方法,我们可以使用this._super()在以前的版本中实现。但是在较新的版本中,当我创建一个对象时,这种情况就不会发生了。

    window.App = Ember.Application.create();

App.Router.map(function(){
    this.resource("users");
});

App.UsersView = Ember.ContainerView.extend({
    init : function(){
        this._super();
        this.pushObject(App.TestView.create({
            didInsertElement : function() {
               this.$().append(' <br><h4>Appended at Object</h4> ');
            }
        }))
    }
});

App.TestView=Ember.View.extend({
    templateName:'test',
    didInsertElement : function() {
       this.$().append(' <br><h4>Appended at Class</h4> ');
    }
});

这部分是完全删除了还是我们可以用其他方式实现这种超级调用?

要理解我的问题,请jsfiddle

PS:我知道我可以拥有需要使用其他方法名执行的代码并调用相同的方法。但如果我有解决方案,那就太好了。

1 个答案:

答案 0 :(得分:1)

您仍然可以从init方法调用this._super(),它将调用父级。删除的是在对象上调用create并传入init方法。有一个createWithMixin方法仍然允许该功能。

这里有关于此功能的非常详细的帖子:

Difference between .create() and .createWithMixins() in ember