2
데이터베이스에서 객체 목록을 가져와야하는 간단한 웹 사이트를 만들고 있습니다. 내가 읽기 및 테스트의 일 후에, nodejs 그렇게 원했고, 마침내이 구성을 사용하기로 결정 :더스트 템플릿의 함수 호출
- 서버 기술 : Nodejs + 익스프레스
- 템플릿 엔진 : 먼지
- 데이터베이스/데이터 소스 : 구문 분석
나는 모든 물건을 유선과는 잘 작동 것 같다,하지만 난 이제 첫 번째 문제가 : 나는 호출 할 필요가 먼지 템플릿에서 함수,이 코드입니다 :
{>layout/}
{<content}
<ul>
{#photos}
<li>{photo.get("name")}{~n}</li>
{/photos}
</ul>
{/content}
그러나 그것은 (문자 그대로) {photo.get ("이름")}를 출력하기 때문에 대신의 이름을 인쇄 작동하지 않습니다 각 사진. Console.log()를 통해로드 된 객체를 볼 수 있으므로 Parse가있는 쿼리가 올바르게 작동합니다.
나는 nodejs와 dust 모두 새로운 것이므로 문제가 먼지에만 관련되어 있는지 잘 모르겠습니다. 어떤 생각? 한다 -
<li>{@exec func="photo.get" args="['name']" /}</li>
{#photo}
<li>{@exec func="get" args="['name']" /}</li>
{/photo}
<ul>
{#photos}
<li>{@exec func="get" args="['name']" /}{~n}</li>
{/photos}
</ul>
args
가 :
var dust = require('dustjs-linkedin');
dust.helpers.exec = function(chunk, context, bodies, params) {
var args = JSON.parse(params.args.replace(/'/g, '"'));
var object = context.stack.head;
params.func.split('.').some(function(property) {
if (typeof(object[property]) === "function") {
var result = object[property].apply(object, args);
chunk.write(result);
return true;
} else {
object = object[property];
return false;
}
})
return chunk;
};
한다고 가정 우리는 다음 한 데이터 :
이app.get('/dust-test', function(req, res) {
function Photo(name) {
var props = {'name': name};
this.get = function(prop) {
return props[prop];
}
}
var photos = ['foo', 'bar', 'nanana'].map(function(name) {
return new Photo(name);
})
res.render("dust-test", {
photo: new Photo('me'),
photos: photos
});
});
사용
결국 어떤 해결책을 결정하셨습니까? –