2014-11-08 5 views
4

Meteor가 베타 버전에서 나왔습니다. 사용하기 매우 기쁩니다. 나는 내 Windows 컴퓨터 (http://win.meteor.com/)에 설치하고 응용 프로그램을 만들었습니다. 여기 코드는 다음과 같습니다정의되지 않은 '헬퍼'속성을 읽을 수 없습니다.

HTML :

<!-- simple-todos.html --> 
<head> 
    <title>Todo List</title> 
</head> 

<body> 
    <div class="container"> 
    <header> 
     <h1>Todo List</h1> 
    </header> 

    <ul> 
     {{#each tasks}} 
     {{> task}} 
     {{/each}} 
    </ul> 
    </div> 
</body> 

<template name="task"> 
    <li>{{text}}</li> 
</template> 

자바 스크립트 :

// simple-todos.js 
if (Meteor.isClient) { 
    // This code only runs on the client 
    Template.body.helpers({ 
    tasks: [ 
     { text: "This is task 1" }, 
     { text: "This is task 2" }, 
     { text: "This is task 3" } 
    ] 
    }); 
} 

그것은 official meteor tutorial에서와 동일한 코드입니다. 예제를 실행하면 제목이 잘 렌더링됩니다. 반면에 목록은 전혀 나타나지 않습니다. 여하튼, 조력자는 작동하지 않는다. 다음과 같은 자바 스크립트 오류가 발생합니다.

Uncaught TypeError: Cannot read property 'helpers' of undefined

유성 콘솔에는 오류 또는 경고가 인쇄되지 않았습니다. 나는 유성에 대해 매우 흥분하고 있으며, 미래에 프로덕션 응용 프로그램을 사용하고 싶습니다. 그래서이 문제 (아마 아주 간단한 문제)를 도와주십시오. 나는 그것이 창문 (유성은 아직 공식적으로 창문에 공개되지 않았다)에서만 문제가되지 않기를 바란다.

+0

우선 추가입니다'console.dir (템플릿) ;'.helpers()'에 대한 호출을 시도하기 전에. 문제는'.body'가'undefined '이기 때문에'Template'이 실제로 어떻게 생겼는지 알아내는 것이 유용 할 것입니다. – Pointy

답변

5

템플릿을 <template name="xxx">으로 정의해야합니다.

<body> 요소에는 도우미가 없습니다.

당신은하지만, 이것에 대한 글로벌 도우미를 사용할 수 있습니다

Template.registerHelper("tasks", function() { 
    return [....] 
}); 

대안은 사용하는 것입니다 <template name="body"> : 내가 할 것

<body> 
    {{>body}} 
</body> 

<template name="body"> 
    <div class="container"> 
    <header> 
     <h1>Todo List</h1> 
    </header> 

    <ul> 
     {{#each tasks}} 
     {{> task}} 
     {{/each}} 
    </ul> 
    </div> 
</template> 
+1

문서에서'Template.body.helpers'를 사용하면 잘 동작 할 것입니다. https://docs.meteor.com/#/full/template_body –

+0

@ PeppeL-G 네가 맞아. 나는 그들이 UI-> Template transition으로 이것을 deprecated했다고 생각했다. – Akshat

+1

그래서 나는 유성의 windows 버전에 문제가 있다고 생각한다. – Pueggel

관련 문제