node.js - Express模板引擎handlebars里面{{#each XXX}}中使用locals.xx 不起作用的
問(wèn)題描述
就是設(shè)置了res.locals.username = xxx然后頁(yè)面里面想要在{{#each}}里使用username
{{#each 不管是什么}} <p>{{username}}</p>{{/each}}username是沒(méi)有值的要怎么樣才能在{{#eac}}里使用locals.xx呢
問(wèn)題解答
回答1:這用法沒(méi)錯(cuò)。
首先保證 username 有值。
不能出現(xiàn)在遞歸 partial里。
如果不是遞歸partial仍然無(wú)輸出值,那肯定是username無(wú)值,不是handlebars的原因。
再者,你也沒(méi)說(shuō)用的哪個(gè)handlebars實(shí)現(xiàn)?是Express集成的 hbs 還是 handlebars?如果是后者,還需要一些集成工作要做。
-------------------------UPDATE----------------------------
我也剛實(shí)驗(yàn)了一下,發(fā)現(xiàn)在 {{#each}} 里確實(shí)沒(méi)法使用 locals 變量。我之前在 hbs 官方倉(cāng)庫(kù)里提了一個(gè) issue,以為只是在 recursive partials 里才不能用 locals,其實(shí)我測(cè)試的那個(gè)partial里也是用到了 {{#each}},跟是否遞歸沒(méi)關(guān)系。這應(yīng)該是 hbs 的一個(gè) bug。我會(huì)更新那個(gè) issue,說(shuō)明這個(gè)問(wèn)題。
issue:https://github.com/pillarjs/h...
------------------------UPDATE-------------------------------
先給你提供一個(gè)臨時(shí)解決思路吧:
把 loginUserPhoto 加入到 render context 里,然后在 {{#each}} 里使用 {{@root.loginUserPhoto}}訪問(wèn)就可以了。
相關(guān)文章:
1. Span標(biāo)簽2. docker-machine添加一個(gè)已有的docker主機(jī)問(wèn)題3. redis啟動(dòng)有問(wèn)題?4. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””5. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問(wèn)題。6. javascript - 計(jì)算面積函數(shù)代碼7. javascript - ng-options 設(shè)置默認(rèn)選項(xiàng),不是設(shè)置第一個(gè)哦,看清楚了!8. SessionNotFoundException:會(huì)話(huà)ID為null。調(diào)用quit()后使用WebDriver嗎?(硒)9. java - Spring MVC無(wú)法識(shí)別Controller導(dǎo)致返回的結(jié)果是404?10. java - Collections類(lèi)里的swap函數(shù),源碼為什么要新定義一個(gè)final的List型變量l指向傳入的list?
