当您调用 Ember.ArrayController.extend 时,您实际上只是在扩展类而不是创建具体实例,因此您不能调用 loadSomeVideos。
Ember 中有一些约定,如果您不知道它们,可能会让您感到困惑。正如“未指定”所评论的那样,您应该使用以下约定来扩展类。
请注意大写 VideoController 以及我定义 loadSomeVideos 方法的方式:
App.VideoController = Ember.ArrayController.extend({
loadSomeVideos: function() {
console.log("I have run");
}
});
现在,如果你想运行它,你需要创建一个 App.VideoController 类的实例。再次注意大写:
App.videoController = App.VideoController.create();
因此,我使用小写的 v 作为实例,使用大写的 V 作为类。我刚刚创建了类 (App.VideoController) 的实例 (App.videoController)。
要调用您的方法,您需要从实例中调用它,如下所示:
App.videController.loadSomeVideos();
查看文档中的以下两页。
第一页为您提供了一些关于扩展类然后实例化它们的信息,以便您可以调用它们的方法:
http://emberjs.com/guides/object-model/classes-and-instances/
第二页深入介绍了更高级的方法reopen 和reopenClass。
http://emberjs.com/guides/object-model/reopening-classes-and-instances/