从模型的静态(aka类级别)方法访问商店?

时间:2014-12-26 16:55:47

标签: ember.js ember-data ember-cli

我有这个:

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

PS为什么我不能直接导入商店?

1 个答案:

答案 0 :(得分:4)

因为模型类未连接到特定商店。商店保存模型的实例,而不是模型类。模型实例是通过store.createRecord(model...从商店创建的,生成的实例放在该商店中。因此理论上,您可以在不同的商店中拥有相同模型类的实例。

如果您真的想要访问商店,可以进行容器查找(代码味道)。或者,如果可能(更好),您可以安排将商店作为参数传递给myStaticMethod

我想你可能想要从静态方法访问商店,因为你想要创建一个记录,或者找一个或者什么。我们假设你想写一个createRecord的变体,它做了一些特别的事情。接近这种方法的显而易见的方法是将其添加到主存储中,或者可能将其放在DS.Store的子类中,并将其作为store.createRecordSpecial('model', ...调用。