2012-11-17 37 views
11

Tôi có mẫu này:Làm thế nào để thêm một mẫu để cơ thể trong Meteor bên trong một gói

<template name="sample"> 
    <h1>Sample</h1> 
</template> 

Bên trong một ứng dụng Meteor tôi có thể thêm video này vào cơ thể theo cách này (như là một phần):

{{> sample}} 

Nó hoạt động. Tôi thậm chí đã thử nghiệm để gọi Template.sample(); bên trong giao diện điều khiển trình duyệt và nó hoạt động.

Khi tôi di chuyển gói này bên trong gói của mình (ví dụ: tệp sample.html trong thư mục gói của tôi) mẫu có vẻ biến mất: Tôi nhận được Template.sample() is not a function bất cứ khi nào tôi gọi hàm và tôi thậm chí không thể hiển thị nó như một phần.

Tôi có một package.js với mã này (và rõ ràng là gói được nạp một cách chính xác bên trong ứng dụng của mình thông qua packages tập tin trong .meteor):

Package.on_use(function (api) { 
    api.add_files(['sample.html', 'sample.js'], 'client'); 
}); 

Tại sao điều này không hoạt động? Làm cách nào để thêm một mẫu (phản hồi) vào nội dung từ gói của tôi?

Trả lời

30

Đã giải quyết! Thêm dòng này:

api.use(['templating'], 'client'); 
+1

một vấn đề khác ở đây là nếu bạn chọn đặt một phần lớn ứng dụng vào gói, bạn cần phải cẩn thận về thứ tự tải. Trước tiên, bạn phải tải các mẫu trước bất kỳ tệp JS/cà phê liên quan nào hoặc bạn sẽ nhận được lỗi loại "Mẫu không tồn tại". – dcsan

+4

Bạn nên chấp nhận câu trả lời của riêng bạn, vì vậy câu hỏi hiển thị là “đã được giải quyết” và được xếp hạng tốt hơn :) – MattiSG

12

nó cũng rất quan trọng để bao gồm các tập tin html trước js

api.add_files("client/sampleTemplate.html", "client"); 
api.add_files("client/sampleTemplate.js", "client"); 
+0

Chính xác, do đó, tệp JS mẫu có quyền truy cập vào mẫu được xác định trong HTML. –

1

Bao gồm trong tập tin packages.js của gói

trước

api.use('meteor-platform'); 
api.use('ui');` 

sau tệp ".html" đầu tiên, af Các tệp ter ".js"

api.addFiles('filename.html','client'); 
api.addFiles('filename.js','client');` 
Các vấn đề liên quan