Vấn đề duy nhất của bạn là cố gắng lặp lại một con trỏ và một mảng con trong cùng một khối. Nếu bạn tách items
của mình mẫu và một item
riêng lẻ mẫu, bạn sẽ có kết quả mong muốn.
Để đơn giản hóa, tôi đã thay đổi mã của bạn để trông giống như sau:
Đây là nội dung chính của bạn:
<body>
{{> items}}
</body>
<template name="items">
{{#each items}}
{{> item}}
{{/each}}
</template>
<template name="item">
<h2>{{itemText}} tags are:</h2>
<ul>
{{#each itemTags}}
<li>{{this}}</li>
{{/each}}
</ul>
</template>
Và đây là người trợ giúp của bạn:
Template.items.helpers({
items: function () {
return Items.find();
}
})
Giả sử một tài liệu hạng mục giống như sau:
{
itemText: String,
itemTags: Array
}
Tôi đã tạo một ứng dụng trên Meteorpad để bạn chơi cùng:
http://meteorpad.com/pad/BmRQ5fkwWEMBKszJW/SO-27951102
bạn có thể thay đổi thêm mã ở đó và xem các thay đổi trong thời gian thực. Về cơ bản, nó là jsfiddle đối với sao băng.
Chỉnh sửa: lấy cảm hứng từ nhận xét của @ chip-Castle, trên thực tế, bạn có thể sử dụng một mẫu duy nhất với each
lồng nhau khối:
<template name="items">
{{#each items}}
<h2>{{itemText}} tags are:</h2>
<ul>
{{#each itemTags}}
<li>{{this}}</li>
{{/each}}
</ul>
{{/each}}
</template>
Nhưng việc sử dụng các mẫu riêng biệt sẽ linh hoạt hơn trong cả thiết kế và xử lý các sự kiện khi cần thiết.