수색…


소개

Blaze는 동적 인 반응적인 HTML 템플릿을 작성하여 사용자 인터페이스를 만드는 강력한 라이브러리입니다. Blaze 템플릿을 사용하면 루프 및 조건부 논리를 HTML 마크 업에 직접 사용할 수 있습니다. 이 절에서는 Blaze를 사용하여 Meteor.js에서 템플리트를 올바르게 사용하는 방법을 설명하고 보여줍니다.

메서드 호출에서 템플릿 채우기

<template name="myTemplate">
  {{#each results}}
    <div><span>{{name}}</span><span>{{age}}</span></div>
  {{/each}}
</template>
Template.myTemplate.onCreated(function() {
  this.results = new ReactiveVar();
  Meteor.call('myMethod', (error, result) => {
    if (error) {
      // do something with the error
    } else {
      // results is an array of {name, age} objects
      this.results.set(result);
    }
  });
});

Template.myTemplate.helpers({
  results() {
    return Template.instance().results.get();
  }
});

템플릿의 데이터 컨텍스트

템플리트가 호출 될 때마다 템플릿의 기본 데이터 컨텍스트가 호출자로부터 암시 적으로 확보됩니다 (예 : childTemplate이 parentTemplate, 즉 호출자 템플리트의 데이터 컨텍스트를 얻음).

<template name="parentTemplate">
    {{#with someHelperGettingDataForParentTemplate}}
    <h1>My name is {{firstname}} {{lastname}}</h1>
    //some stuffs here
    {{> childTemplate}}
    {{/with}}
</template>

위의 상황에서 부모 템플릿에 대한 도우미 추출 데이터는 childTemplate에서 자동으로 가져옵니다. 예를 들어, {{firstname}} 및 {{lastname}}은 childTemplate에서도 액세스 할 수 있습니다.

<template name="childTemplate">
<h2>My name is also {{firstname}} {{lastname}}</h2>
</template>

아래 예제처럼 템플릿에 인수를 전달하여 childTemplate의 데이터 컨텍스트를 명시 적으로 정의 할 수도 있습니다.

<template name="parentTemplate">
    {{#with someHelperGettingDataForParentTemplate}}
    <h1>My name is {{firstname}} {{lastname}}</h1>
    //some stuffs here
    {{> childTemplate childData=someHeplerReturningDataForChild}}
    {{/with}}
</template>

도우미 someHelperReturningDataForChild 가 {profession : "Meteor Developer", 취미 : "stackoverflowing"}과 같은 객체를 반환한다고 가정하면이 특정 객체는 childTemplate의 명시적인 데이터 컨텍스트가됩니다. 이제 자식 템플릿에서 우리는 다음과 같은 것을 할 수 있습니다.

<template name="childTemplate">
    <h2>My profession is {{profession}}</h2>
    <h3>My hobby is {{hobby}}</h3>
</template>

템플릿 도우미

템플릿 도우미 는 Blaze의 필수 요소이며 비즈니스 로직과 템플릿에 대한 반응성을 모두 제공합니다. 템플릿 도우미는 실제로 종속성이 변경 될 때마다 다시 실행되는 반응식 계산 임을 기억하는 것이 중요합니다. 필요에 따라 템플릿 도우미를 전역으로 정의하거나 특정 템플릿으로 범위를 지정할 수 있습니다. 각 템플릿 도우미 정의 접근법의 예가 아래에 제공됩니다.

  1. 단일 템플릿으로 범위가 지정된 템플릿 도우미의 예입니다.

먼저 템플릿을 정의하십시오.

<template name="welcomeMessage">
  <h1>Welcome back {{fullName}}</h1>
</template>

그런 다음 Template 도우미를 정의하십시오. 이 예제에서는 템플릿의 데이터 컨텍스트에 firstName 및 lastName 속성이 포함되어 있다고 가정합니다.

Template.welcomeMessage.helpers({
  fullName: function() {
    const instance = Template.instance();
    return instance.data.firstName + ' ' + instance.data.lastName
  },
});
  1. 전역 템플릿 도우미의 예 (이 도우미는 모든 템플릿 내에서 사용할 수 있습니다.)

먼저 도우미를 등록하십시오.

Template.registerHelper('equals', function(item1, item2) {
  if (!item1 || !item2) {
    return false;
  }

  return item1 === item2;
});

equals 도우미를 정의하면 모든 템플릿 내에서 사용할 수 있습니다.

<template name="registration">
  {{#if equals currentUser.registrationStatus 'Pending'}}
    <p>Don't forget to complete your registration!<p>
  {{/if}}
</template>


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow