1

1 つのルートで 2 つのモデルをロードしようとしていますが、うまくいきません。フォームを動的に作成するためのすべての情報を保持する 1 つのルートと、フォーム送信データをプッシュするもう 1 つのモデルです。ここに私がこれまでに持っているもののいくつかがあります:

ルーターマップ

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');
    });
});

ルートについては、次の3つすべてを試しました

オプション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/")
            })
        });
    }
});

開始時の 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}}
4

1 に答える 1

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/")
        })
 });
于 2014-01-10T05:25:26.620 に答える