2014-11-01 17 views
8

tôi nâng cấp lên Sao băng 1.0, cài đặt các gói sắt-router mới nhất, cố gắng để chạy ứng dụng của tôi và nhận được cảnh báo đẹp này trong giao diện điều khiển đăng nhập của tôi:Hoàn toàn bối rối về this.next() trong Meteor sắt-router

Công văn tuyến đường không bao giờ được hiển thị. Bạn đã quên gọi this.next() trong một onBeforeAction?

Vì vậy, tôi đã cố gắng sửa đổi tuyến đường của mình theo phiên bản mới.

this.route('gamePage', { 
     path: '/game/:slug/', 
     onBeforeAction: [function() { 
      this.subscribe('singlePlayer', this.params.slug).wait(); 
      var singlePlayer = this.data(); 
      if (singlePlayer) { 
       if (singlePlayer.upgrade) { 
        this.subscribe('upgrades', this.params.slug).wait(); 
        this.next(); 
       } 
       this.next(); 
      } 
      this.next(); 
     }], 
     data: function() { 
      return Games.findOne({slug: this.params.slug}); 
     }, 
     waitOn: function() { return [Meteor.subscribe('singleGame', this.params.slug)]} 
    }); 

Làm cách nào để khắc phục sự cố này? Bất kỳ trợ giúp nào sẽ được đánh giá cao.

Trả lời

9

Thử xóa tất cả các .wait() giây và xóa mảng xung quanh chức năng onBefore của bạn.

Với API mới this.next() thay thế .wait().

+0

Cảm ơn bạn! Điều đó hoạt động! Tôi có cần 3 x 'this.next()' hoặc chỉ một lần ở cuối hàm? – user3475602

+0

Bạn có thể không cần nó cho 'if' đầu tiên. Hãy thử và báo cáo lại. – benstr

+0

Điều này làm việc cho tôi: 'if (singlePlayer) { nếu (singlePlayer.upgrade) { this.subscribe ('updates', this.params.slug) .wait(); } } this.next(); ' Bạn có thể giải thích nơi tôi nên đặt' this.next() 'nói chung không? Phương pháp thử và lỗi là một chút bực bội. – user3475602

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