0

Firebase に裏打ちされた ember アプリケーションを介していくつかの CI 情報を表示しようとしています。私が行うthis.store.find('plan');と、目的のプロジェクトの計画をフェッチして表示しますが、必要な計画を自動的に非同期フェッチしません。何が間違っているのかよくわかりません。

DEBUG: -------------------------------
DEBUG: Ember      : 1.9.0-beta.1+canary.8105a1bb 
DEBUG: Ember Data : 1.0.0-beta.11+canary.d96c747da5
DEBUG: EmberFire  : 1.2.7
DEBUG: Handlebars : 1.3.0
DEBUG: jQuery     : 1.10.2
DEBUG: ------------------------------- 


App = Ember.Application.create();

App.Router.map(function() {
  // put your routes here
});

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('project');
  }
});

App.ApplicationAdapter = DS.FirebaseAdapter.extend({
  firebase: new Firebase('https://my.firebaseio.com/api-data/')
});

App.Project = DS.Model.extend({
  name: DS.attr('string'),
  plans: DS.hasMany('plan', { async: true })
});

App.Plan = DS.Model.extend({
  project: DS.belongsTo('project', { async: true }),
  shortName: DS.attr('string'),
  shortKey: DS.attr('string'),
  type: DS.attr('string'),
  enabled: DS.attr('boolean'),
  name: DS.attr('string'),
  description: DS.attr('string'),
  isBuilding: DS.attr('boolean'),
  averageBuildTimeInSeconds: DS.attr('number')
});

私のテンプレート

  <script type="text/x-handlebars" data-template-name="index">
    <ul>
    {{#each project in model}}
      <li>
        <h3>{{project.name}}</h3>
        <ul>
          {{#each plan in project.plans}}
            <li>{{plan.name}}</li>
          {{else}}
            <li>no plans</li>
          {{/each}}
         </ul>
      </li>
    {{/each}}
    </ul>
  </script>

project.plans プロパティにアクセスしようとしたときに、ember-data 非同期関係を自動的に取得するにはどうすればよいですか?

編集:

私は Ember-CLI の http-mock でモックを作成しようとしましたが、以下を返信しています/projects

{"plans":[{id: '10', project: '1', name: 'test', plans: ['10']}]}

これは、計画配列の追加に取り組んでいます。これがfirebaseでどのように機能するかを理解する必要があります。

4

1 に答える 1

0

最初のシード データの後に Firebase を使用するときは、各モデル タイプをフェッチし、すべてのインスタンスで保存を呼び出しました。これにより、非同期データ配列に対して Firebase が適切に設定されました。これは次のように永続化されました。

/projects

{
    "AS": {
        "name": "AS",
        "plans": {
            "AS-AS": true
        }
    },
    "F": {
        "name": "F",
        "plans": {
            "F-INT": true,
            "F-QA": true,
            "F-STAG": true
        }
    }
}

/plans

{
    "AS-AS": {
        "averageBuildTimeInSeconds": 23,
        "description": "",
        "enabled": true,
        "isBuilding": false,
        "name": "AS - AS",
        "project": "AS",
        "shortKey": "AS",
        "shortName": "AS",
        "type": "chain"
    },
    "F-INT": {
        "averageBuildTimeInSeconds": 18,
        "description": "Integration build",
        "enabled": true,
        "isBuilding": false,
        "name": "F - Integration",
        "project": "F",
        "shortKey": "INT",
        "shortName": "Integration",
        "type": "chain"
    },
    "F-QA": {
        "averageBuildTimeInSeconds": 38,
        "description": "Release from Stage to QA",
        "enabled": true,
        "isBuilding": false,
        "name": "F - QA",
        "project": "F",
        "shortKey": "QA",
        "shortName": "QA",
        "type": "chain"
    },
    "F-STAG": {
        "averageBuildTimeInSeconds": 16,
        "description": "Stage Build and Deploy",
        "enabled": true,
        "isBuilding": false,
        "name": "F - Stage",
        "project": "F",
        "shortKey": "STAG",
        "shortName": "Stage",
        "type": "chain"
    }
}
于 2014-10-12T22:29:40.937 に答える