Dynamic 动态/在运行时创建和删除余烬模型

Dynamic 动态/在运行时创建和删除余烬模型,dynamic,ember.js,ember-data,Dynamic,Ember.js,Ember Data,我已经为此工作了几天,决定咬紧牙关寻求帮助 我使用的是ember cli,我试图在运行时基于一些元数据动态创建ember模型。如果用户想要指定一个数据集(查询、文件等),可以使用一个示例用例;我想读取用户的数据文件,并根据文件的结构设置一个模型 我已经成功地安装了一个使用ember数据和装置的ember cli应用程序(为了简单起见)。我的静态示例有三个模型,当我使用Chrome Ember调试器时,我可以看到模型和存储中的数据 现在来看看我的动态示例 通过在IndexRoute中进行设置,我已

我已经为此工作了几天,决定咬紧牙关寻求帮助

我使用的是ember cli,我试图在运行时基于一些元数据动态创建ember模型。如果用户想要指定一个数据集(查询、文件等),可以使用一个示例用例;我想读取用户的数据文件,并根据文件的结构设置一个模型

我已经成功地安装了一个使用ember数据和装置的ember cli应用程序(为了简单起见)。我的静态示例有三个模型,当我使用Chrome Ember调试器时,我可以看到模型和存储中的数据

现在来看看我的动态示例

通过在IndexRoute中进行设置,我已经能够在运行时成功地定义模型

var IndexRoute = Ember.Route.extend({

    init: function() {
        // Create a simple model dynamically
        var MyModel = DS.Model.extend({
            defineAttributes: function(){
                Ember.defineProperty(this, 'col1', DS.attr()); 
                Ember.defineProperty(this, 'col2', DS.attr()); 
                Ember.defineProperty(this, 'col3', DS.attr());      
            }.on('init')
        });

        // insert some data into our model
        MyModel.reopenClass({
          FIXTURES: [
            {
                id: '1',
                col1: "key1",
                col2: "value1",
                col3: "value2"
            }, 
            {
                id: '2',
                col1: "key2",
                col2: "value1",
                col3: "value2"
            },             
            {
                id: '3',
                col1: "key3",
                col2: "value1",
                col3: "value2"
            }       
          ]
       });  
    }
});
问题是,我看不到模型被放置在哪里,而且它也没有出现在数据(存储)中的Chrome调试器中

如果我将
MyModel
的定义更改为
Ember.Application.MyModel
,那么我可以在控制台中的
Ember.Application
下看到该模型的定义,但它仍然对Ember调试器不可见

然后,我尝试扩展上面的示例,添加
模型
钩子,如下所示:

var IndexRoute = Ember.Route.extend({

    init: function() {
        ...
    },
    model: function() {
        return this.store.findAll('my-model');
    }
});
但是对
this.store.findAll('my-model')
的调用在这两种情况下都失败了。我假设我没有正确地连接东西

在我的示例中,我还知道我的模型的名称也不是动态的,所以我真的想知道如何在运行时以编程方式为我的模型创建名称

我非常感谢那些对该框架更有经验的人的帮助或指导,因为我对Ember和整个配置优于约定的方法印象深刻

谢谢


戴夫

你基本上是在定义一些东西,然后把它扔掉。您需要将其附加到应用程序的命名空间(如果您使用的是Ember cli,则可以在索引文件或配置文件中看到)

此外,我怀疑在
init
上定义属性是否有效,它可能有效,但实际上并不必要


第三,你真的想用余烬数据来做这个吗?余烬数据非常固执己见,听起来你不想定义任何东西。

当你完成这篇文章时,你将学到更多关于余烬的知识,比你真正想要的要多得多。