我有这个:
Post.reopenClass({
myStaticMethod: function() {
// I need to access the store here!
// this.store => undefined
}
});
PS为什么我不能直接导入商店?
答案 0 :(得分:4)
因为模型类未连接到特定商店。商店保存模型的实例,而不是模型类。模型实例是通过store.createRecord(model...
从商店创建的,生成的实例放在该商店中。因此理论上,您可以在不同的商店中拥有相同模型类的实例。
如果您真的想要访问商店,可以进行容器查找(代码味道)。或者,如果可能(更好),您可以安排将商店作为参数传递给myStaticMethod
。
我想你可能想要从静态方法访问商店,因为你想要创建一个记录,或者找一个或者什么。我们假设你想写一个createRecord
的变体,它做了一些特别的事情。接近这种方法的显而易见的方法是将其添加到主存储中,或者可能将其放在DS.Store
的子类中,并将其作为store.createRecordSpecial('model', ...
调用。