数据模型在余烬中

我有一个ember-cli应用程序,我需要根据驻留在远程位置的配置数据动态生成一些余烬数据模型。 我有一个初始化器,它可以延迟应用程序的准备,并通过ajax获取配置数据。

现在,在一个古老的烬DS.Model应用程序中,从那一点开始,我只需生成我的DS.Model对象,并将它们分配给全局App ember应用程序实例。 然而,在一个ember-cli中,我不确定如何定义这些模型,以便可以在应用程序的其余部分找到它们,因为默认情况下,ember-cli的解析器根据文件名/目录结构生成模型及其名称。


事实证明,这比我想象的要简单一些。 基本上只需要在我的初始化程序中为我动态生成的每个模型使用Ember.Application.register ,如下所示:

import Ember from "ember";
import request from "ic-ajax";
import DS from "ember-data";

export default {
    name: 'model-config',
    initialize: function(container, application) {
        application.deferReadiness();

        request('/path/to/model/config/data').then(function(response) {
            Ember.$.each(response.tables, function(modelName, modelCfg) {
                var cfg = {};

                Ember.$.each(modelCfg, function(fieldName, fieldCfg) {
                    if(typeof fieldCfg === 'string') {
                        cfg[fieldName] = DS.attr(fieldCfg);
                    } else {
                        cfg[fieldName] = DS[fieldCfg.type](fieldCfg.model);
                    }
                });

                application.register('model:' + modelName, DS.Model.extend(cfg));
            });

            application.advanceReadiness();
        });
    }
};
链接地址: http://www.djcxy.com/p/90961.html

上一篇: data models in ember

下一篇: Data: Adding Server Queries to AJAX Requests