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()
。记录将显示为非自定义,但在承诺解决时会自定义自身。我认为这很好。