1

我想允许以下内容在我的应用程序中工作:

store.find('my-addon.my-addon-model', 1)

store.find('my-addon/my-addon-model', 1)

store.find('my-addon:my-addon-model', 1)(不太可能)

问题是我希望它搜索在插件中 100% 定义的模型。

import MyAddonModel from 'my-addon/models/my-addon-model'在我的应用程序中工作 - 但容器解析不......

我将如何做/允许这样做?

4

1 回答 1

1

这个问题与以下内容相同:

使用 Ember 数据存储从另一个命名空间注册模型

但是那里的命名有点混乱。尝试此操作时,我似乎也遇到了 ember-data@1.0.0-beta.15 中的错误。

您需要在模块初始化程序中做的是将模型注册到您的应用程序。

import Ember from 'ember';    
import MyModel from my-module/models/my-model';    
export default {
    name: 'my-module-models',

    initialize: function(container, application) {
        //one of these calls for each model you need to register
        application.register('model:myModule.myModel',MyModel);
    }
};

现在根据我使用 Ember 和 Ember-Data 的经验,这应该是这样工作的。但是在我使用 ember-data@1.0.0-beta.15 的设置中,在创建后确定模型“密钥”似乎存在问题。模型实例创建良好,但您在尝试保存模型时会遇到错误。

我找到了一个快速的解决方法,但它是一个 hack,我需要进一步调查我是否错过了一个步骤或者它是一个错误。解决方法涉及设置类的“typeKey”,导致:

import MyModel from my-module/models/my-model';    
export default {
    name: 'my-module-models',

    initialize: function(container, application) {
        //one of these calls for each model you need to register
        application.register('model:myModule.myModel',MyModelreopenClass({typeKey:'myModule.myModel'}));
    }
};

最后,还有另一种方法。在 ember-cli 中创建模块时,您拥有 app 文件夹,该文件夹将使用您的模块与应用程序合并。您可以将模型的默认扩展放在 app 文件夹中。

于 2015-03-17T16:26:32.170 回答