Node.js 将ejs中的键值数组与组合选定值进行比较
我有一个route js,其中我定义了如下get函数:Node.js 将ejs中的键值数组与组合选定值进行比较,node.js,ejs,Node.js,Ejs,我有一个route js,其中我定义了如下get函数: exports.get = function (req, res) { var calls = [{ propertyTypes: function (acc) { return '/catalog/propertyTypes/'; }, }]; commercial_residential = { 1 : 'Residencial', 2 : 'Comerci
exports.get = function (req, res) {
var calls = [{
propertyTypes: function (acc) {
return '/catalog/propertyTypes/';
},
}];
commercial_residential = {
1 : 'Residencial',
2 : 'Comercial'
}
property_types = [
[
[4 , "departamento"],
[5 , "campo"],
[8 , "casa"],
[13 , "duplex"],
[43 , "casa"],
[47 , "departamento"],
[49 , "campo"],
[50 , "Terreno"],
[53 , "departamento"],
[63 , "ph"]
],[
[1 , "Local"],
[2 , "Quinta"],
[3 , "Cochera"],
[4 , "Galpon"],
[5 , "emprendimiento"],
[6 , "Lote"],
[7 , "Oficina"],
[9 , "Fondo de Comercio"],
[10 , "Galpon"],
[12 , "fondo de comercio"],
[13 , "fondo de comercio"],
[79 , "fondo de comercio"]
]
]
fetcher.getWithDependencies(calls, function (err, results) {
var propertyTypes = (results.propertyTypes) ? results.propertyTypes : [];
[];
fetcher.get('/ilist/importer/get/property/' + id, function (e, results) {
res.render('ilist-importer/property', {
'data': results,
'list': {
'propertyQR': propertyTypes,
'propertyTypes': property_types,
}
});
});
})
};
var propertyTypeID = [];
<% list.propertyQR.forEach(function(property) { %>
propertyTypeID.push({
id: <%- JSON.stringify(property.id) %>,
name: <%- JSON.stringify(property.name) %>
});
<% }); %>
在这个get函数的表单中,在ejs文件中,我有一个组合框,其中显示所有属性类型名称。提交表单时,我需要将所选值属性_类型名称与route.js中的键值数组属性qr进行比较。
这是我的表格选择:
<select name="comercial" id="comercial_form" class="span3">
<option value="0">-Seleccione-</option>
<% for(var i=0; i < list.propertyTypes[1].length; i++) { %>
<option value="<%= list.propertyTypes[1][i][1] %>">
<%= list.propertyTypes[1][i][1] %>
</option>
<% } %>
</select>
这是我到目前为止所拥有的。首先,我尝试将从route.js获取的PropertyQR数组复制到一个新的数组PropertyTypeID中,然后在表单提交时,将表单中的选定值与我创建的键值数组名称字段进行比较,如果匹配,则获取id字段
<script>
$(function () {
var propertyTypeID = [];
for(var i=0; i< <%= list.propertyQR.length%>; i++){
propertyTypeID.id.push(<%= list.propertyQR[i].id %>)
propertyTypeID.name.push(<%= list.propertyQR[i].name %>)
};
$('#submit-import-form').click(function(){
for(var i=0; i < propertyTypeID.length; i++){
if (tipoPropiedad==propertyTypeID[i].name)
propertyTID=propertyTypeId[i].id;
}
}
});
</script>
现在,当我尝试加载表单时,我得到:
未捕获的TypeError:无法读取未定义的属性“push”
为什么会这样?请帮忙 请记住,EJS代码是在服务器上运行的,它会生成客户端JavaScript代码,该代码完全独立运行,而不需要了解EJS环境。您可以通过查看返回到浏览器的内容来查看EJS生成的内容 此代码有几个问题:
var propertyTypeID = [];
for(var i=0; i < <%= list.propertyQR.length%>; i++){
propertyTypeID.id.push(<%= list.propertyQR[i].id %>)
propertyTypeID.name.push(<%= list.propertyQR[i].name %>)
};
我不确定这个循环是否有必要。您可能只需要使用var propertyTypeID=即可。这取决于你到底想做什么
还有其他问题,例如propertyTypeID中的逗号、长度