在一个ember.js路线中加载两个emberFire模型

时间:2014-01-10 03:42:31

标签: ember.js firebase emberfire

我正试图在一条路线上加载两个模型,并没有任何运气搞清楚。保存所有信息以动态创建表单的一种途径和另一种将表单提交数据推送到的模型。以下是我目前的一些内容:

路由器地图

App.Router.map(function() {
    this.route('about');
    this.route('plans');
    this.resource('prices', function() {
        this.resource('price', { path: '/:price_id' });
    });
    this.resource('apply', function() {
        this.resource('getstarted');
        this.resource('addresses');
        this.resource('contacts');
        this.resource('drivers');
        this.resource('equipment');
        this.resource('assign');
    });
});

对于路线,我尝试了以下所有三个

选项1

App.GetstartedRoute = Ember.Route.extend({
    model: function(){
        return Ember.Object.create({
            form: function() {
                return EmberFire.Array.create({
                    ref: new Firebase("https://example.firebaseio.com/apply/getstarted")
                 });
             },
            data: function() {
                return EmberFire.Array.create({
                    ref: new Firebase("https://example2.firebaseio.com/companies/-JAY7n7gXJeVbFCCDJdH/carriers/")
                 });
             },
        });
    }
});

选项2

App.GetstartedRoute = Ember.Route.extend({
    model: function(){
        return Ember.RSVP.hash({
            form: function() {
                return EmberFire.Array.create({
                    ref: new Firebase("https://example.firebaseio.com/apply/getstarted/")
                 });
             },
            data: function() {
                return EmberFire.Array.create({
                    ref: new Firebase("https://example2.firebaseio.com/companies/-JAY7n7gXJeVbFCCDJdH/carriers/")
                 });
            }
        });
    }
});

解决方案选项3 - 正如kingpin2k所建议

App.GetstartedRoute = Ember.Route.extend({
    model: function(){
        return Ember.Object.create({
            form: EmberFire.Array.create({
                ref: new Firebase("https://moveloaded-ember.firebaseio.com/apply/getstarted/")
            }),
            data: EmberFire.Array.create({
                ref: new Firebase("https://logistek.firebaseio.com/companies/-JAY7n7gXJeVbFCCDJdH/carriers/")
            })
        });
    }
});

在getstarted上的FireBase json

{
  "_type" : "object",
  "1" : {
    "type" : "text",
    "placeholder" : "Type it in here...",
    "name" : "carrierName",
    "caption" : "What's the name of your carrier?"
  }
}

通过递归第一个模型创建表单,将数据放入生成表单的组件中。我尝试使用以下所有内容访问第一个模型中的emberFire数组:

{{model.form.type}} {{form.type}}

{{#each form}}
    {{type}}
{{/each}}

{{#each model.form}}
    {{type}}
{{/each}}

{{#each}}
    {{form.type}}
{{/each}}

但它不起作用......

有什么想法吗?

更新1:

该修复程序使用了kingpin2k建议的选项3

另外,我必须对我的GetstartedController进行以下更改:

发件人: App.GetstartedController = Ember.ArrayController.extend

App.GetstartedController = Ember.ObjectController.extend

然后访问表单模型就像:

{{#each form}}
    {{type}}
{{/each}}

1 个答案:

答案 0 :(得分:0)

查看firebase代码,它看起来不像是暴露任何承诺(所以Ember.RSVP.hash对你没有任何帮助)。这就是说你基本上只是创建一个包含2个字段的哈希并返回它。

return Ember.Object.create({
  form: EmberFire.Array.create({
          ref: new Firebase("https://example.firebaseio.com/apply/getstarted")
        }),
  data: EmberFire.Array.create({
          ref: new Firebase("https://example2.firebaseio.com/companies/-JAY7n7gXJeVbFCCDJdH/carriers/")
        })
 });