2014-06-23 2 views
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 
    }); 
}); 

사용

+0

결국 어떤 해결책을 결정하셨습니까? –

답변

2

나는 도우미의 생성 외에는 다른 해결책이 없다 json 형식의 인수 배열 (작은 따옴표 사용)