2012-11-17 24 views
6

Tôi cần thực hiện tác vụ kết xuất cụ thể khi Bộ sưu tập đã hoàn thành tải của nó trên máy khách. Chiến lược tốt nhất để biết khi nào dữ liệu có sẵn trong Bộ sưu tập trên máy khách.Meteor.js Làm cách nào để biết bộ sưu tập của tôi đã sẵn sàng trên máy khách

tôi đã đi lên với giải pháp này:

Meteor.subscribe('alldrawings', myRendering); 

function myRendering(){ 
    //do some no-markup stuff with the data 
    //(i'm creating canvas objs and drawing on them) 
} 

Đây có phải là cách để làm điều đó? Có phương pháp được đề nghị nào khác ngoài phương pháp này không?

Trả lời

2

Bạn có thể sử dụng gọi lại đăng ký. AFAIK, đây là cách duy nhất có thể phát hiện, nếu đăng ký được cập nhật hoàn toàn.

Tùy chọn khác là sử dụng người quan sát có con trỏ thu thập: http://docs.meteor.com/#observe. Nhưng tôi nghĩ các nhà quan sát được gọi liên tục, từng người một, khi dữ liệu đến, và không một lần khi hoàn thành (chỉ).

3

Bạn có thể thiết lập một biến phản ứng tự hỏi:

alldrawingsReady = new ReactiveVar(false); 

Meteor.subscribe('alldrawings', function() { 
    alldrawingsReady.set(true); 
}); 

Tracker.autorun(function(){ 
    if(!alldrawingsReady.get()) { 
     return; 
    } 

    // Do some no-markup stuff with the data 
    // (eg. creating canvas objs and drawing on them) 
}); 

Và nếu bạn cần phải có một bộ sưu tập một mẫu sẵn sàng, sử dụng này:

Template.my_template.rendered = function() { 
    this.autorun(function(){ 
     if(!alldrawingsReady.get()) { 
      return; 
     } 

     // Do some DOM manipulations based on the data 
    }); 
} 
Các vấn đề liên quan