据我所知,当我在一个铁路由器钩子里面的结果集中,就像之前:或者waitOn:一样,它工作正常,但它似乎会在另一条路线运行时被拆除.有谁知道这是怎么回事?
假设它是,这是否意味着只有在路由中保留订阅的方法是订阅除Router.map()函数之外的其他地方?
流星0.8.0与新的Blaze渲染一起出现,这对未来很有意义.
目前我无法运行我的铁路由器驱动的应用程序:更新 - >运行流星 - >白色浏览器屏幕.我想我会回到0.7.2.但这给我一种模糊的感觉.它就像有一台没有互联网连接的新电脑.这些变化有什么问题吗?至少对于铁路由器?
注释评论(虽然它在标题中):我正在使用Discover Meteor书学习流星,这是一本由铁路由器的同一作者写的好书; 我喜欢它.但是,如果流星变化那么多,我是在浪费时间吗?
更新 @ iAmME的解决方案效果很好!我解决了另一种方法,通过修改smartpackage修复了铁路由器的进度.只是想发布它,如果它可以帮助任何人:
{
"packages": {
"blaze-layout": {},
"iron-router":
{
"git": "https://github.com/EventedMind/iron-router.git",
"branch": "blaze-integration"
},
"iron-router-progress":
{
"git": "https://github.com/Multiply/iron-router-progress.git",
"branch": "blaze-integration"
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个情况,使用以下代码最好地描述:
Meteor.publish('users', function (name) {
return Users.find({name: name});
});
Meteor.publish('posts', function (userId) {
return Posts.find({userId: userId}, {sort: {insertDate: 1}});
});
Run Code Online (Sandbox Code Playgroud)
用户有很多帖子.所以,当网址是
http://example.com/john
Run Code Online (Sandbox Code Playgroud)
因此,要查找特定用户的帖子,我需要知道用户的ID.
现在我有以下控制器:
UserController = RouteController.extend({
onBeforeAction: function () {},
waitOn: function () {
var userSub = Meteor.subscribe('user', this.params.name);
return [userSub];
},
data: function () { ... },
action: function () {
if (this.ready()) {
this.render('user');
}
else {
;//this.render('loading');
}
}
});
Run Code Online (Sandbox Code Playgroud)
现在我只能waitOn是用户,但我也想等待帖子,但我怎么能这样做,因为订阅帖子我需要知道userId:
Meteor.subscribe('posts', user._id);
Run Code Online (Sandbox Code Playgroud)
有什么建议 ?
我使用meteor,iron-router和d3.d3用于根据数据反应显示饼图,我在铁路由器的数据函数中计算.所以,我希望d3在dom到位时运行.
但是,我不知道应该把d3代码放在哪里.我曾经把它放在我生成数据的数据函数中.但是,有时在dom未就绪时计算数据函数(因此d3无法绘制图表).
我想在dom完全渲染后运行d3,并且该函数可以访问数据函数的结果.我试图使用挂钩onAfterAction,但似乎这个函数无法访问数据.我也尝试使用Template.rendered,就像stackoverflow中的其他帖子所说的那样.但是,渲染的函数似乎只运行一次,并且在数据更改时不会重新运行.我把渲染的函数放在Tracker.autorun函数中,但它仍然只运行一次.
那么,有没有一个地方可以反应性地运行d3代码,可以访问渲染的dom以及数据字段?
谢谢.
我的/lib/router.coffee中有一个简单的铁路由器配置:
Router.configure
notFoundTemplate: "notFound"
Router.map ->
@route "app",
path: "/"
template: "app"
Run Code Online (Sandbox Code Playgroud)
当进入/它的工作,但如果我尝试转到/ abc然后它重定向我/#!abc,之后它重定向我/ abc,所以无休止地重复(我在浏览器的地址栏中看到这些更改,在浏览器日志重定向中从/到/ abc和后面).我从来没有看到404错误.
有没有人遇到过这种行为?
我使用Meteor v1.0.2.1.有我的流星列表:
alethes:lodash 0.7.1
appcache 1.0.3
coffeescript 1.0.5
ground:localstorage 0.1.7
ground:store 0.1.1
ianhorst:bower 0.0.2
iron:router 1.0.6
meteor-platform 1.2.1
meteorhacks:kadira 2.15.2
peerlibrary:async 0.9.0_3
rzymek:moment 2.8.3_10
rzymek:moment-locale-ru 2.8.4
Run Code Online (Sandbox Code Playgroud)
我也在客户端使用Framework7.
routing web-applications meteor iron-router html-framework-7
在模板助手中,我从Iron.Router (铁:路由器)获取当前路径,如下所示:
Router.current().route.path(this);
Run Code Online (Sandbox Code Playgroud)
这工作正常,除非路径路径确实包含参数 (e.g. /client/:_id/edit).在这种情况下,path()函数返回null.
当路由包含参数时,如何获取模板助手中的当前路径?
有关于这个问题的帖子,但那里提到的解决方案似乎不合适.
我正在使用Meteor 1.1.5 with iron:router1.0.7
我略微扩展了discovermeteor教程,并在post_item.html中为每个帖子添加了一个图片:
<img src="discover.png" height="40px" />
Run Code Online (Sandbox Code Playgroud)
将discover.png放入公共文件夹后,一切似乎都按预期工作.但是,如果您打开详细信息页面(单击"讨论")并返回概述(单击标题中的"显微镜")图片或不再加载.它发生在Safari和Firefox中,在Chrome中它仍然按预期工作.我把这个例子放在http://img-notloading-safari.meteor.com上
我不知道这是否与它有关,但我注意到,铁的'waitOn'功能:路由器在开始时加载概述时被调用两次,但是当我从详细视图中返回时只调用一次而且图片没有加载.
任何提示都将受到高度赞赏.
所以我发现这个导航栏功能与Bootstrap-3,但截至目前我使用的是Flow-Router而不是Iron-Router.因此,我正在寻求将此辅助函数转换为Flow-Router术语:
Template.navItems.helpers({
activeIfTemplateIs: function (template) {
var currentRoute = Router.current();
return currentRoute &&
template === currentRoute.lookupTemplate() ? 'active' : '';
}
});
Run Code Online (Sandbox Code Playgroud)
我已经自己尝试修复问题(虽然我的网站/应用程序的许多部分仍无法正常运行,但我没有费心去测试它),但我要求以"是"或"否"的形式进行确认,也许更多关于我做错了什么的信息.
Template.navItems.helpers({
activeIfTemplateIs: function (template) {
var currentRoute = FlowRouter.current();
return currentRoute &&
template === currentRoute.name ? 'active' : '';
}
});
Run Code Online (Sandbox Code Playgroud)
我从Flow-Router API引导自己.这个解决方案是正确的还是出于某种原因而严格限制与Iron-Router一起使用?
我真的在与铁路由器waitOn挣扎.
我有很多订阅,我想等待,在我看来铁路由器正在等待任何事情.
我已经设置了许多订阅(main.js),我想在应用程序启动之前加载它:
Meteor.subscribe("appointments");
Meteor.subscribe("business");
Meteor.subscribe("clients");
Meteor.subscribe("staff");
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几乎所有可能的配置,但我似乎无法让"加载器"显示自己并等待所有订阅准备就绪.我在layoutTemplate('layout')中有一个辅助函数来从数据库中获取一个值但是findOne()返回undefined/null我认为这是因为路由器没有等待订阅...
我的路由器配置.我想了解我如何链接依赖项或创建依赖项等待.
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading',
waitOn: function () {
console.log('Iron router start');
this.subscribe('clients').wait();
this.subscribe('staff').wait();
this.subscribe('appointments').wait();
this.subscribe('business').wait();
this.subscribe('calendar').wait();
},
action: function() {
if (this.ready()) {
this.render('dashboard');
} else {
this.render('loading');
}
}
});
Run Code Online (Sandbox Code Playgroud) 好的,所以我找到了这篇文章:流星面包屑
但是可以说我有以下几点:
<template name="somePage">
<h1>Page Title</h1>
{{> breadcrumb}}
</template>
<template name="breadcrumb">
<ul class="breadcrumb">
<li>
<a href="{{pathFor 'homeTemplate'}}">Home</a>
</li>
{{#each path}}
<li>
<a href="needthepath">{{this}}</a>
</li>
</ul>
</template>
Helper:
Template.breadcrumb.helpers({
path: function() {
return Router.current().path.split( "/" );
}
});
Run Code Online (Sandbox Code Playgroud)
好的,所以顶部的链接问题为我提供了基础知识。我正在尝试了解如何在此处做一些显而易见的事情。我想要第一个
我希望能够包含适当的路径。明确地说,我很乐意做到这一点:
<template name="breadcrumb">
<ul class="breadcrumb">
<li>
<a href="{{pathFor 'homeTemplate'}}">Home</a>
</li>
~ pseudo logic
{{#each path that isn't current page}}
<li>
<a href="{{dynamicPath}}">{{this}}</a>
</li>
{{/each}}
<li>
{{ currentPage }}
</li>
</ul>
</template>
Run Code Online (Sandbox Code Playgroud)
有没有人做过此事或找到了我还没有偶然发现的参考?