0

私は ember フレームワークを初めて使用し、ember データへのアクセスに問題や疑問があります。デモ目的で ember-cli と ember-cli-mirage を使用しています。

config.js

export default function() {
this.get('/newcontracts', function(db, request) {

 return {
   data:[{
     "type": "newcontracts",
     "id": 1,
     "attributes": {
         "department-type": ["Legal", "Sales"],
         "agreement-type": ["Service Agreement", "Purchase"],
         "renewal-type": ["One time", "None"]
     }
  }]
 }
});

エンバーストア

export default Model.extend({
   "type": "",
   "department-type": attr(""),
   "agreement-type": attr(""),
   "renewal-type": attr("")
});

ルーター

export default Ember.Route.extend({
     model: function(){
        console.log(this.get('store').findAll('newcontract')) // outputs ember class
        return this.get('store').findAll('newcontract');
     });

コントローラ

 export default Ember.Controller.extend({
  details: Ember.computed('model', function() {
   return this.store.peekRecord('new-contract', 1) // --> outputs ember class
    //console.log(this.store.peekRecord('new-contract', 1).get('department-type)) ---> desired output(array)
  })
  departmentDetails: Ember.computed('model', function() {
    this.details.get('department-type') ; ///error
  })

});

テンプレート

{{log "model" details}} --> ember class
{{log "model" model}} --> ember class
{{log "model" model.department-type}} --> undefined

そのように departmentDetails にアクセスできませんか? 詳細プロパティでコメント行を使用すると、目的のデータを取得できます。各データはストアから個別に取得する必要がありますか? また、モデルの値をログに記録すると、Ember クラスが得られます。

テンプレートファイルでも、model.department-type などの値が取得できません。

Ember chrome インスペクターでデータを正しく取得します。参考までに、私はember 2.5.1を使用しています。これについて私を助けてください。

4

1 に答える 1

1

this.get('store').findAll('newcontract');newcontract の配列を提供します。

model[0].department-typeテンプレートにログインすると、 department-type.

あなたの質問に答えるために、あなたはdepartmentDetailsどこにもアクセスしていません。代わりに、コントローラーで作成しています。

また、 のような計算されたプロパティに直接アクセスすることはできません。details常に を使用する必要がありますget()。だからそうではthis.get('details').get('department-type')ないthis.details.get('department-type')

于 2016-07-15T17:52:29.257 に答える