Füllen einer dropdown-Liste in form mit anderen Modellen Daten in nodejs
Ich versuche, füllen Sie eine dropdown-Liste für eine form für eines meiner Modelle (Autos), mit Daten aus einem anderen Modell (Farben), aber kann nicht scheinen, um herauszufinden, wie dies zu tun. Ich muss ja irgendwie rufen Sie die Liste der Farben in der dropdown-in den Autos.jade-Datei, so dass, wenn ein Benutzer wählt die auto-gefüllten Liste, ich muss die ObjectID der Wert der Sache (die später gespeichert wird, als ein neues Auto.
Autos Neue Form (Auto.jade):
/* This is the bit I'm having trouble with */
select(name='carColours')
option(value='')
each colour in colours
- var select=null; if (colour.title == carColours.title) select='selected';
option(value=colour._id, selected=select)= colour.title
Autos controller (cars.js):
exports.new = function(req, res){
res.render('cars/new', {
title: 'New Car',
event: new Car({})
})
}
Autos Modell - (car.js):
var CarSchema = new Schema({
title: {type : String, default : '', trim : true},
colour: {type : Schema.ObjectId, ref : 'Colour'},
})
Farben-Modell (colour.js)
var ColourSchema = new Schema({
title: {type : String, default : '', trim : true},
hexadecimal: {type : String, default : '', trim : true},
})
ColourSchema.statics = {
list: function (options, cb) {
var criteria = options.criteria || {}
this.find(criteria)
.sort({'title': 1}) //sort alphabetically
.exec(cb)
}
}
- Bitte informieren Sie, wenn weitere Informationen erforderlich.
- Wo ist der
colours
array in der Pflege.jade aus? Und welche Fehler sind Sie immer genau, wenn überhaupt? - Ich habe in der Farben-Modell (nicht-array) und aktualisiert die Beschreibung. Ich bin nicht wirklich immer alle Fehler noch nicht, wie ich don T wissen, wie man Ansatz die Lösung, die ist, warum ich gefragt wurde hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihren Anruf zu erbringen cars.js versorgen muss die Liste der Farben.
Dem Objekt, das Sie passieren zu
render
nach dem Pfad zu der Ansicht, die Vorlage ist der Kontext, in dem Ihre anzeigen-Vorlage arbeitet. Wenn das Objekt nicht die Eigenschaft in Frage (in diesem Fallcolours
), dann wird weder Ihre anzeigen-Vorlage. (Es gibt eine Ausnahme, aber es nicht so Aussehen, wie Sie Sie es hier).Gehe ich in dieses in der neuesten episode einer screencast Serie, die ich produzieren (http://www.learnallthenodes.com/episodes/9-view-templates-in-nodejs-with-jade). Ich bin mir nicht sicher, wie der genaue Zeitstempel, Wann ich getroffen, dass ein Teil.
[<list of possible colours>]
Teil, wie ist bevölkert von den Farben Modell?possibleColours: ['red','green','blue']
und dann übergeben Sie es alscolours: Colour.possibleColours
. Ich gehe davon aus, dass Sie einen definierten Satz von möglichen Farben und Sie sind nicht dynamisch. Hilft das?list
statische Funktion auf Ihrem Modell. In diesem Fall, in der route-handler brauchen Sie zum aufrufen dieser Funktion und in seiner callback würde Sie Ihre render-Aufruf. Hier ist eine Zusammenfassung: gist.github.com/juanpaco/8410206carColours.title
rufttitle
auf eine variablecarColours
dass nicht definiert ist. Sie würde ebenso übergeben zu müssen, ein Verweis auf IhreCar
Instanz zu überprüfen, die Liste der Farben.colours
in der route-handler war, denn das war die variable, die Sie in Ihrer Vorlage verwendet werden. So, dass sollte die Funktion als drop-in Ersatz.