我正在尝试使用其他模型(颜色)的数据填充我的某个模型(汽车)的表单的下拉列表,但似乎无法弄清楚如何执行此操作。我需要以某种方式将颜色列表调用到cars.jade文件的下拉列表中,这样当用户选择自动填充列表时,我需要将ObjectID作为项目的值(随后将其保存为新车
汽车新表格(car.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
汽车控制器(cars.js):
exports.new = function(req, res){
res.render('cars/new', {
title: 'New Car',
event: new Car({})
})
}
汽车模型(car.js):
var CarSchema = new Schema({
title: {type : String, default : '', trim : true},
colour: {type : Schema.ObjectId, ref : 'Colour'},
})
颜色模型(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)
}
}
答案 0 :(得分:3)
您在cars.js中进行渲染的调用需要提供颜色列表。
exports.new = function(req, res){
res.render('cars/new', {
title: 'New Car',
event: new Car({}),
colours: [<list of possible colours>]
})
}
在视图模板的路径之后传递给render
的对象是视图模板运行的上下文。如果该对象没有相关属性(在本例中为colours
),那么您的视图模板也不会。 (有一个例外,但它看起来不像你在这里使用它。)
我在我制作的截屏系列的最新一集中进入了这个(http://www.learnallthenodes.com/episodes/9-view-templates-in-nodejs-with-jade)。我不确定我到达那个部分的确切时间戳。