2016-07-15 14 views
0

Ich bin neu im Ember Framework und habe Probleme oder Zweifel beim Zugriff auf Ember-Daten. Ich benutze ember-cli und ember-cli-mirage für Demozwecke.Ember: Ich kann nicht auf Modelldaten im Controller/Template zugreifen

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"] 
    } 
    }] 
} 
}); 

Ember Shop

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

Router

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

-Controller

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

}); 

Vorlage

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

kann ich nicht auf departmentDetails wie das? Ich erhalte die gewünschten Daten, wenn ich die Eigenschaft "Kommentardetails in Details" verwende. Soll ich die einzelnen Daten getrennt vom Laden bekommen? Wenn Sie den Wert im Modell protokollieren, erhalten Sie eine Ember-Klasse.

Auch in der Template-Datei, kann ich nicht den Wert von model.department-Typ erhalten, usw.

ich die Daten korrekt in dem Ember Chrom Inspektoren erhalten. Fyi, ich benutze Ember 2.5.1. Bitte hilf mir dabei.

+0

Inisde Ihr Modell, was die Idee hinter Typ Feld ist. Sie verwenden JsonApi Adapter richtig? Auch Ihre Eigenschaften sind Arrays, Legal ... Sales ... Möchten Sie das, wie Array verbrauchen. Ich kann einige Tipps geben, aber nicht sicher, wie Sie Abteilungs-Typ konsumieren möchten ... innerhalb wählen? –

+1

Wenn Sie keine Transformation angeben möchten, sollten Sie 'atr()', nicht 'attr (" ")' verwenden. Sie müssen auch this.get ('details') 'in' departmentDetails' eingeben. – locks

+0

Sowohl Modell als auch Details sind Ember-Enumerables, so dass Sie sie aufzählen können, um die Daten zu erhalten .. referenz http://stackoverflow.com/questions/37380384/get-data-from-emberjs-store-find/37408910#37408910 – kumkanillam

Antwort

1

this.get('store').findAll('newcontract'); gibt Ihnen eine Reihe von neuen Verträgen.

Protokollierung model[0].department-type in Vorlage wird die department-type drucken.

Um Ihre Frage zu beantworten, greifen Sie nirgends auf departmentDetails zu, stattdessen erstellen Sie einen im Controller.

Sie können auch nicht direkt auf eine berechnete Eigenschaft wie details zugreifen, Sie sollten immer get() verwenden. So sein this.get('details').get('department-type') nicht this.details.get('department-type')