2016-03-24 7 views
0

Ich habe ein Problem, das korrekte theSalary zurückzugeben. Sie erhalten für alle Angebote das gleiche Gehalt.Falsche Daten zurückgeben

Pfad: helpers.js

Template.jobOfferCandidateView.helpers({ 
    jobOffers:()=> { 
     return JobOffers.find({candidateUserId: Meteor.userId()}); 
    }, 
    theSalary: function() { 
     var jobOffers = JobOffers.findOne({});    
     var num = (jobOffers && jobOffers.salary) ? jobOffers.salary.toString() : ''; 

     return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,") 
    } 
}); 

Pfad: template.html

{{#each jobOffers}} 

    {{title}} 
    ${{theSalary}} 

{{/each}} 

Antwort

1

theSalary wird innerhalb einer {{#each jobOffers}} Schleife aufgerufen, so dass ihr Kontext ein Jobangebot ist.

Die erste Zeile der theSalary ist zur Zeit: Angebot in der Sammlung

var jobOffers = JobOffers.findOne({}); 

, die gerade den ersten Auftrag gibt (das ist, warum Sie das gleiche Gehalt immer bekommen). Versuchen Sie, diese Zeile:

var jobOffers = this; 
0

Da Sie bereits den jobOffer Kontext innerhalb des Blocks each haben, können Sie nur so etwas wie:

theSalary: function() { 
    num = ''; 

    if (this.salary !== undefined) { 
     num = this.salary.toString(); 
    } 

    return num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,") 
},