发现jade一个致命伤~~~这种情况下没法处理~~求解决方案
比如jsp…我在controller有个list传过来…想输出到js里面…供页面js调用…我可以这么写
<script>
var aList = {};
<% for obj in list {%>//<--此处用了jsp循环的伪代码
aList[<%=obj.id%>] = '<%=obj.name%>';
<%}%>
</script>
好吧…你看…jade能怎么写啊
看jade的文档:
根据文档上下文…script标签里面的全是text…不会去给你解析标签的 即使你写 - each xx in xxx…
7 回复
我的解决思路是先把那个 list 转成 json,然后把 json 字符串塞进前端的 js 里,不知道能不能解决楼主的疑问。
jade:
script
var raw = JSON.parse('!{list}'); // 用 json 字符串做中介
console.log(raw);
var aList = {};
for (i in raw) {
console.log(i);
aList[raw[i].id] = raw[i].name;
}
console.log(aList);
express:
exports.index = function(req, res){
// res.render('index', { title: 'Express' })
res.render('test', {
title: 'Express',
list: JSON.stringify([
{id:1, name:'a'},
{id:2, name:'b'},
{id:3, name:'c'}
])
});
}
囧,Jada 直接把 scritpt 当成 literal 语法块的哇
对哦,这样的话我贴代码里的第二行直接写成
var raw = !{list};
就行了
这个确实是个问题哇…
试了一下,输出是这样的啊
var aLists = [object Object],[object Object];
目前的解决方案如此:
<script>
| $(function(){
| var teams = {};
- each team in teams
|teams[!{team.id}] = '!{team.name}';
| $('.datetimepicker').datetimepicker({dateFormat:'yy-mm-dd'});
| $('#team1').change(function(){
| alert('ok');
| });
| });
</script>
果断用起 ejs