在Ember应用程序中使用Ember CLI Addon模型?

时间:2015-03-17 11:46:27

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

我希望在我的应用程序中允许使用以下内容:

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'可以在我的应用中运行 - 但容器解析不会......

我该如何做/允许这个?

1 个答案:

答案 0 :(得分:1)

这个问题与:

相同

Registering models from another namespace with the Ember Data store

然而,命名有点令人困惑。在尝试这个时,我似乎也遇到了一个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进行的设置中,似乎确定了模型" key"创作之后。模型实例创建得很好,但是在尝试保存模型时会出错。

我找到了一个快速的解决方法,但它是一个黑客,我需要进一步调查我是否错过了一个步骤或它是一个错误。解决方法涉及设置" 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文件夹中。