Ember.js 从型号';s静态(又名类级)方法?

Ember.js 从型号';s静态(又名类级)方法?,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,我有这个: Post.reopenClass({ myStaticMethod: function() { // I need to access the store here! // this.store => undefined } }); PS为什么我不能导入存储或其他东西?因为模型类没有连接到特定的存储。存储保存模型的实例,而不是模型类。模型实例是通过store.createRecord(Model…)从存储中创建的,生成的实例放在该存储中。因此,从理论上

我有这个:

Post.reopenClass({
  myStaticMethod: function() {
    // I need to access the store here!
    // this.store => undefined
  }
});

PS为什么我不能导入存储或其他东西?

因为模型类没有连接到特定的存储。存储保存模型的实例,而不是模型类。模型实例是通过
store.createRecord(Model…
)从存储中创建的,生成的实例放在该存储中。因此,从理论上讲,同一模型类的实例可以在不同的存储中

如果您确实想访问存储,可以执行容器查找(代码气味)。或者,如果可能,您可以安排将存储作为参数传递到
myStaticMethod
(更好)


我假设您想从静态方法访问存储,因为您想创建一条记录,或者查找一条记录,或者其他什么。假设您想编写一个
createRecord
的变体,它做了一些特殊的事情。显而易见的方法是将其添加到主存储,或者可能将其放入
D的子类中S.Store
,并将其作为
Store.createRecordSpecial('model'),…

调用,因为模型类未连接到特定的存储。存储包含模型的实例,而不是模型类。模型实例通过
Store.createRecord从存储创建(model…
,生成的实例放在该存储中。因此,理论上,同一个模型类的实例可以放在不同的存储中

如果您确实想访问存储,可以执行容器查找(代码气味)。或者,如果可能,您可以安排将存储作为参数传递到
myStaticMethod
(更好)


我假设您想从静态方法访问存储,因为您想创建一条记录,或者查找一条记录,或者其他什么。假设您想编写一个
createRecord
的变体,它做了一些特殊的事情。显而易见的方法是将其添加到主存储,或者可能将其放入
D的子类中你想访问另一个模型吗?你想访问另一个模型吗?谢谢你,torazaburo。你的假设是正确的:我想要一个定制的
createRecord
。困难在于它应该是一个承诺(
store.find
)。但我认为我不需要立即实例化记录。因此,我不需要在模型上使用静态方法,而是要执行
store.createRecord('foo').customize()
。该记录将显示为非自定义记录,但在承诺解决后将自行自定义。我认为这很好。谢谢你,torazaburo。你的假设是正确的:我想要一个自定义的
createRecord
。困难在于它应该是一个承诺(
存储。查找
)。但我认为我不需要立即实例化记录。因此,我不需要在模型上使用静态方法,而是要执行
store.createRecord('foo').customize()
。记录将显示为非自定义,但在承诺解决时会自定义自身。我认为这很好。