Sproutcore 2 - 类方法和变量

标签 sproutcore

我一直在实现这个答案中所示的类方法

Basic Sproutcore: class method, class variables help

但它不再适用于 Sproutcore 2:-

MyFooClass.mixin({
    barClassMethod: function() {
        /* ... */
    }
})

给出错误

MyFooClass.mixin [undefined] is not a function

我已尝试通读 Sproutcore 源代码,但无法真正识别任何类方法或变量,这让我感到非常惊讶。

也许我只是做错了?

最佳答案

扩展 sproutcore 类时应牢记两点。

首先,您必须先定义您的类,然后才能将某些东西混入其中。因此,首先使用

创建您的类/对象
MyFooClass = SC.Object.extend({ ... });

MyFooClass = SC.Object.create({ ... });

而第一个语句将创建一个类,第二个语句将创建一个类的具体实现(用面向对象的术语来说就是一个对象)。通常,如果您使用 SC.Object.create() ,目标是创建一个单例对象,否则使用 SC.Object.extend() 定义您的类,并使用定义的类创建您定义的类的对象

myFooObject = MyFooClass.create();

因此,请确保首先定义了要混入方法中的类或对象,并且在您要使用它时已经在范围内。

其次,如果您想将其他方法或属性混合到预先存在的类或对象中,请按如下方式使用 SC.mixin

SC.mixin(MyFooClass, {
    yourMixedInMethod: function() {
        console.log('mixed in method called');
    }
});

您也可以对对象执行此操作,但请注意,只有给定的对象才能获得混合方法,而不是该类的所有实例。如果您希望所有实例都获得您必须混合到类定义中的附加功能。

关于Sproutcore 2 - 类方法和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214236/

相关文章:

javascript - SproutCore 开发人员 - 您应该事先了解哪些语言?

sproutcore - 在 sproutcore 中检测 window.unload 的正确方法是什么

sencha-touch - Sproutcore/Ember/Blossom/Sencha 和移动设备(或替代框架)的现状

sproutcore - Sproutcore 顺序由其他 Controller

javascript - 芽核后端

ember.js - 何时使用 SproutCore 和何时使用 Ember

javascript - 如何将 SC.Record 的 SC.Record.toMany() 数据绑定(bind)到 ListView?

soap - 带有SproutCore的SOAP请求

couchdb - 托管由Cloudant CouchDB备份的Sproutcore应用程序的最佳位置?