覆盖 DS.Store ember-cli

Posted

技术标签:

【中文标题】覆盖 DS.Store ember-cli【英文标题】:Overwrite 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')
  
);

【问题讨论】:

【参考方案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)。

以上是关于覆盖 DS.Store ember-cli的主要内容,如果未能解决你的问题,请参考以下文章

Mac中git忽略DS_Store文件

Mac中git忽略DS_Store文件

[macOS] git忽略所有的.DS_Store文件

为啥压缩文件手机上查看会有ds store

手机里怎么打开Ds store文件

后缀为ds store 文件怎么在window下打开,用啥软件