2013-07-13 35 views
7

Tôi có một cấu trúc ứng dụng khá đơn giản có chứa những libsMeteor nơi xác định bộ sưu tập của tôi?

server - chứa một số cấu hình cho việc định tuyến và ENV

client - chứa mẫu (<template name=".*"></template>) & JS tập tin cho mỗi mẫu

collections

bây giờ bên trong bộ sưu tập tôi có tệp có tên "Albums.js" và có nội dung khá đơn giản

var Albums = new Meteor.Collection("Albums");

bây giờ bên trong thư mục khách hàng của tôi Tôi đang cố truy cập vào biến này Albums và tôi gặp lỗi không xác định.

mục tiêu của tôi là để lấy dữ liệu từ form và vượt qua nó để collection.insert

Trả lời

12

Không sử dụng var trừ khi bạn muốn riêng tư cho tệp đó.

Albums = new Meteor.Collection ("Albums");

4

biến định nghĩa với var từ khóa là địa phương để các tập tin chúng được xác định. Nếu bạn muốn có một biến toàn cầu, chia sẻ giữa các file, bạn cần để xác định nó mà không có từ khóa var.

Có vẻ như nó không có trong doc, nhưng đó là trong file https://github.com/meteor/meteor/blob/master/History.md (đối với phiên bản 0.6.0):

Biến khai báo với var ở cấp ngoài cùng của một file nguồn JavaScript hiện nay tới tập tin đó. Loại bỏ các var để chia sẻ một giá trị giữa các tập tin.

Về cơ bản, mỗi tệp JS được gói trong mẫu (function(){ ... })(); để cung cấp gói này.

5

một cách khác để xác định biến toàn cầu là tạo tệp mới, ví dụ: collections.js và đặt nó trực tiếp vào thư mục gốc ứng dụng của bạn (không phải vào bất kỳ thư mục con!)

Trong file này Bạn có thể định nghĩa biến toàn cầu/bộ sưu tập (không var từ khóa)

+0

Trên thực tế, bạn có thể muốn đặt nó ở ' lib' thư mục để đảm bảo nó được tải trước khi hầu hết các kịch bản khác. – Domi

Các vấn đề liên quan