ejs模板在js中的引用
 发布于 9 年前  作者 linghao2014  5898 次预览  最后一次回复是 9 年前  来自 问答 

今天遇到个特殊的情况,需要在js中引用页面的数据: 屏幕快照 2016-12-02 上午11.48.23.png 一共有4条数据,但返回了4个相同的数据(都是第3个,还不是最后一个), 表示懵逼了

8 回复
linghao2014

我怀疑是ejs输出模板中的i不是for循环中的变量i

alsotang

@linghao2014 经典的js for循环闭包问题,不是ejs的问题

linghao2014

@alsotang 并不是闭包的问题,push()里面的i是对的。(如果是闭包,也应该得到最后一个的数据)

linghao2014

已解决,分享一下吧。用ejs的循环方式就能成功了

DevinXian

模板渲染和js循环完全搞混了!

falost

模板输出的所有数据好像都是字符串类型吧

Galen-Yip

@linghao2014 要分清楚模板输出和js直接输出…你需要在模板里面把musicData赋给一个变量

function iframeLoad() {
	var songsArr = [];
	var musicData = <%- JSON.stringify(musicData) %>
	for( var i =0, len = musicData.length; i<len; i++ ) {
		songArr.push({
			id: musicData[i].mId,
			...
		})
	}
}