【问题标题】:Overwrite DS.Store ember-cli覆盖 DS.Store ember-cli
【发布时间】:2014-10-19 01:19:29
【问题描述】:

我有一些代码需要在 store.init 上运行。

我尝试扩展app/store.js 中的默认存储,ember-cli 似乎将其作为存储,但this.store 中的对象不是存储

我的店铺定义:

import DS from 'ember-data';

export default DS.Store.extend({
  init:function(){
    console.log('watatLoL')
  }
});

【问题讨论】:

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


    【解决方案1】:

    > Ember 1.13 的答案

    Store 现在是extends the Service,所以我们可以创建app/services/store.js 并输入以下代码来扩展/自定义商店:

    // app/services/store.js
    import DS from 'ember-data';
    
    export default DS.Store.extend({
    
      init: function() {
        console.log('Using custom store!');
        return this._super.apply(this, arguments);
      }
    });
    

    Here's a sample twiddle

    【讨论】:

    • 谢谢。我一直在努力弄清楚如何在较新的 Ember 版本上执行此操作,我能找到的所有 SO 答案都是针对较旧的实现。从 Ember 2.16.2 开始,这对我有用
    • 很高兴帮助队友:)
    【解决方案2】:

    根据 Peter Wagenet 的说法,这在 Ember Data beta 19 中发生了变化。如果您使用的是该版本或更高版本,则该文件现在为 app/stores/application.js(如果您使用的是 pod,则为 app/application/store.js)。

    覆盖存储是一样的,只是文件名/位置发生了变化。如果您使用的是低于 beta 19 的 Ember Data 版本,则可以使用旧的 app/store.js 文件。


    我知道这是旧的,但我不得不回答另一个问题,所以我想我会更新这个。默认情况下,Ember-CLI 解析器将查找 app/store.js,因此您可以在那里声明您的覆盖存储。

    // app/store.js
    
    import DS from 'ember-data';
    
    export default DS.Store.extend({
        init: function() {
            console.log('Using custom store!');
            return this._super.apply(this, arguments);
        }
    });
    

    【讨论】:

    • 不用担心,我记得在执行此操作时出错,我会测试并选择正确答案,谢谢 :)
    • 从 beta.19 开始,正确的位置现在是 app/stores/application.js(如果您使用的是 pod,则为 app/application/store.js)。
    猜你喜欢
    • 2023-03-27
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多