gpt4 book ai didi

meteor 和铁路由器 : subscription lifetimes

转载 作者:行者123 更新时间:2023-12-01 14:32:43 24 4
gpt4 key购买 nike

据我所知,当我订阅铁路由器钩子(Hook)内的结果集时,如之前:或 waitOn:,它工作正常,但一旦另一条路线运行,它似乎就被拆除了。有谁知道这是否会发生?

假设是这样,这是否意味着使订阅在路由之间持续存在的唯一方法是在 Router.map() 函数之外的其他地方订阅?

最佳答案

如果你想保持路由之间的订阅,你必须重新订阅。实现此目的的一种简单方法是使用 Controllers .还值得一提的是,Iron-Router/Meteor 足够智能,可以知道您何时在路由之间重复使用相同的订阅,因此它们不会再次加载。

一种方法:

ProjectController = RouteController.extend({
before: [
function() {
this.subscribe("project.comments", this.params.projectId).wait();
this.subscribe("project.log", this.params.projectId).wait();
}
]
});

Router.map(function () {
this.route('project.overview', {
path: '/project/:projectId/overview',
controller: 'ProjectController'
});

this.route('project.tasks', {
path: '/project/:projectId/tasks',
controller: 'ProjectController'
});
});

现在“project.overview”和“project.tasks”路由将订阅“project.comments”和“project.log”。

然后您可以创建一个特定于路由的 Controller 并从“ProjectController”扩展以进行特定于路由的订阅:

ProjectController = RouteController.extend({
before: [
function() {
this.subscribe("project.comments", this.params.projectId).wait();
this.subscribe("project.log", this.params.projectId).wait();
}
]
});

ProjectOverviewController = ProjectController.extend({
before: [
function() {
this.subscribe("project.stats", this.params.projectId).wait();
}
]
});

Router.map(function () {
this.route('project.overview', {
path: '/project/:projectId/overview',
controller: 'ProjectOverviewController'
});

this.route('project.tasks', {
path: '/project/:projectId/tasks',
controller: 'ProjectController'
});
});

“project.overview”路由现在将订阅“project.comments”、“project.log”和“project.stats”。

如果您需要应用程序范围的订阅,另一种方法是使用“Router.before” Hook (https://github.com/EventedMind/iron-router#using-hooks):

Router.before(function() {
this.subscribe("global.sub");
});

关于 meteor 和铁路由器 : subscription lifetimes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com