传递EJS变量以在客户端<script>

时间:2015-11-27 12:25:06

标签: javascript jquery ejs

我有一个EJS变量用于在我的模板中呈现产品列表; <代码> prodArray 。 EJS在&lt; div&gt; 中列出了这些内容,每个按钮都有三个按钮。这些按钮由jQuery脚本控制,我希望jQuery能够访问 prodArray 数组。我想要一种方法将EJS局部变量传递给客户端脚本,如此。

&#xA;&#xA;
 &lt; script&gt;&#xA; var prodArray =&lt;%= prodArray%&gt; &#xA;&lt; / script&gt;&#xA;  
&#xA;&#xA;

不幸的是,这对我来说并不是这么简单。该脚本出错。&#xA;如果我尝试在客户端javascript中调用 prodArray ,则会出现未定义的错误。

&#xA;&#xA; < p> prodArray 包含需要传递的日期对象和id对象,而不需要转到 undefined 。也许我错过了一些非常简单的东西,因为找不到这个问题的其他人。任何帮助将不胜感激。

&#xA;&#xA;

请求的代码:(我正在处理它。这是一团糟。当前解决我的问题的方法是将每个产品的objectId保存为字符串in一个隐藏的 p 标签。但这不是我想要的......我很可能将数组传递给我的整个脚本。)

&#xA;&# xA;

EJS:

&#xA;&#xA;
 &lt; h2&gt; Producnts&lt; / h2&gt;&#xA;&lt; p&gt;您目前有&lt;%= prodArray .length%&gt;有效产品。 &lt; / p&gt;&#xA;&lt; a href =“/ camphome / products / new”class =“btn btn-info”&gt;添加新商品&lt; / a&gt;&#xA;&#xA;&lt;% prodArray.forEach(function(product,idx){%&gt;&#xA;&lt;%var editlink =“/ camphome / products / edit /”+ product._id%&gt;&#xA;&lt;%var removelink = “/ camphome / products / remove /”+ product._id%&gt;&#xA;&lt; div class =“prod”&gt;&#xA;&#xA;&lt;! - &lt; div class =“prodImage “&gt;&lt; / div&gt;  - &gt;&#xA;&lt; h2&gt;&lt;%= product.name%&gt;&lt; / h2&gt;&#xA;&lt; p&gt;开始:&lt; span class = “moment”&gt;&lt;%= moment(product.startDate).format('MMM Do YYYY hh:mm')%&gt;&lt; / span&gt;&lt; br /&gt;&#xA;其他开始:&# xA;地点:&lt;%= product.places.max%&gt;&lt; br /&gt;&#xA;预订号码:&lt;%= product.places.booked%&gt;&lt; br /&gt;&#xA ;价格:€&lt;%= product.cost%&gt;&#xA;&lt; / p&gt;&#xA;&lt; p hidden class =“prodIdx”&gt;&lt;%= idx%&gt;&lt; / p&gt; ;&#xA;&lt; p hidden class =“prodId”&gt;&lt;%= product._id%&gt;&lt; / p&gt;&#xA;&lt; a class =“btn btn-i nfo btn-sm“role =”button“href =”&lt;%= editlink%&gt;“&gt;编辑产品&lt; / a&gt;&#xA; &lt;%if(product.places.booked&gt; 1 || 1 === 1){%&gt;&#xA; &lt; a class =“btn btn-info btn-sm”role =“button”href =“&lt;%= removelink%&gt;”&gt;删除产品&lt; / a&gt;&#xA; &lt;%}%&gt;&#xA; &lt;! - &lt; span hidden class =“prodId”value =“&lt;%= product._id%&gt;”&gt;&lt; / span&gt;  - &gt;&#xA; &lt; a class =“btn btn-info btn-sm reserveButton”role =“button”data-toggle =“modal”data-target =“#selfReserve”&gt; Reserve Place(s)&lt; / a&gt;&#xA ;&#XA; &lt;! -  Modal  - &gt;&#xA; &lt; div id =“selfReserve”class =“modal fade”role =“dialog”&gt;&#xA; &lt; div class =“modal-dialog”&gt;&#xA; &lt;! - 模态内容 - &gt;&#xA; &lt; div class =“modal-content”&gt;&#xA; &lt; div class =“modal-header”&gt;&#xA; &lt; button type =“button”class =“close”data-dismiss =“modal”&gt;&amp; times;&lt; / button&gt;&#xA; &lt; h4 class =“modal-title”&gt;在您自己的产品上保留地点。&lt; / h4&gt;&#xA; &LT; / DIV&GT;&#XA; &lt; div class =“modal-body”&gt;&#xA; &lt; form id =“selfReserveForm”action =“”method =“post”&gt;&#xA; &lt; input class =“form-control”name =“selProd”id =“selProd”type =“hidden”&gt;&lt; / input&gt;&#xA; &lt; input class =“form-control”name =“action”id =“action”type =“hidden”value =“reserve”&gt;&lt; / input&gt;&#xA; &lt; p&gt;多少个地方?&lt; / p&gt;&#xA; &lt; label for =“reserveNum”&gt;&lt; / label&gt;&#xA; &lt; input class =“form-control”style =“width:30%”id =“reserveNum”name =“reserveNum”type =“number”min ='1'max =“&lt;%= product.places.max -  product.places.booked%&gt;“ ID = “selfReservePlaces” &GT;&LT; /输入&GT;&#XA; &LT峰; br /&GT;&#XA; &lt; button type =“submit”class =“btn btn-primary”&gt; Update!&lt; / button&gt;&#xA; &LT; /形式&GT;&#XA; &LT; / DIV&GT;&#XA; &lt; div class =“modal-footer”&gt;&#xA; &lt; button type =“button”class =“btn btn-default”data-dismiss =“modal”&gt;取消&lt; / button&gt;&#xA; &LT; / DIV&GT;&#XA; &LT; / DIV&GT;&#XA;&#XA; &LT; / DIV&GT;&#XA; &LT; / DIV&GT;&#XA; &lt;! - 模态结束 - &gt;&#xA; &lt; / div&gt;&#xA;&lt;%})%&gt;&#xA;&lt; script src =“https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min .js“&gt;&lt; / script&gt;&#xA;&lt; script&gt;&#xA; var prodArray =&lt;%= prodArray%&gt ;; //这就是我想要的东西!!。&#xA; //下面的肮脏工作!!&#xA; $(文件).ready(function(){&#xA; $('。reserveButton')。 click(function(){&#xA; // var prodIdx = $(this).siblings('。prodIdx')。text();&#xA; //console.log(prodIdx);
 var ID = $(this).siblings('。prodId')。text();&#xA; $('#selProd')。val(ID)&#xA;})&#xA;});&# XA;&LT; /脚本&GT;&#XA;  
&#XA;&#XA;

INDEX.js

&#XA;&#XA;
 <代码> router.get('/ products',function(req,res,next){&#xA; var Product = mongoose.model('products');&#xA; Product.find({campID:req.user。 data._id})&#xA; .sort({startDate:1})&#xA; .exec(function(error,results){&#xA; res.render('camphome',{&#xA; title :'产品',&#xA;中间:'产品',&#xA;类名:'产品',&#xA; prodArray:结果,&#xA;时刻:时刻,&#xA; socialIcons:socialIcons,& #xA; user:req.user,&#xA; userdata:req.user.data,&#xA; isAuthenticated:req.isAuthenticated()&#xA;})&#xA;})&#xA;}) &#X A;  
&#XA;

0 个答案:

没有答案