标签: iron-router

Meteor和Iron-router:订阅生命周期

据我所知,当我在一个铁路由器钩子里面的结果集中,就像之前:或者waitOn:一样,它工作正常,但它似乎会在另一条路线运行时被拆除.有谁知道这是怎么回事?

假设它是,这是否意味着只有在路由中保留订阅的方法是订阅除Router.map()函数之外的其他地方?

meteor iron-router

2
推荐指数
1
解决办法
793
查看次数

流星0.8.0,铁路由器和发现流星

流星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 iron-router

2
推荐指数
1
解决办法
1799
查看次数

Meteor/Iron路由器:如何等待依赖于其他数据的数据

我有一个情况,使用以下代码最好地描述:

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)

有什么建议 ?

javascript meteor iron-router

2
推荐指数
1
解决办法
3473
查看次数

流星,在哪里放d3代码?

我使用meteor,iron-router和d3.d3用于根据数据反应显示饼图,我在铁路由器的数据函数中计算.所以,我希望d3在dom到位时运行.

但是,我不知道应该把d3代码放在哪里.我曾经把它放在我生成数据的数据函数中.但是,有时在dom未就绪时计算数据函数(因此d3无法绘制图表).

我想在dom完全渲染后运行d3,并且该函数可以访问数据函数的结果.我试图使用挂钩onAfterAction,但似乎这个函数无法访问数据.我也尝试使用Template.rendered,就像stackoverflow中的其他帖子所说的那样.但是,渲染的函数似乎只运行一次,并且在数据更改时不会重新运行.我把渲染的函数放在Tracker.autorun函数中,但它仍然只运行一次.

那么,有没有一个地方可以反应性地运行d3代码,可以访问渲染的dom以及数据字段?

谢谢.

d3.js meteor iron-router

2
推荐指数
1
解决办法
726
查看次数

流星无限重定向而不是渲染404

我的/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

2
推荐指数
1
解决办法
457
查看次数

Meteor Iron Router没有从Route获得Current Path

在模板助手中,我从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

meteor iron-router

2
推荐指数
1
解决办法
1449
查看次数

重新渲染Meteor模板时图像不再加载

我略微扩展了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'功能:路由器在开始时加载概述时被调用两次,但是当我从详细视图中返回时只调用一次而且图片没有加载.

任何提示都将受到高度赞赏.

meteor iron-router

2
推荐指数
1
解决办法
277
查看次数

使用Flow-Router时,在引导程序导航中突出显示活动路由

所以我发现这个导航栏功能与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一起使用?

meteor twitter-bootstrap-3 iron-router flow-router

2
推荐指数
1
解决办法
1640
查看次数

努力等待订阅和多个订阅

我真的在与铁路由器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)

meteor iron-router

1
推荐指数
1
解决办法
2096
查看次数

流星+铁路由器创建面包屑

好的,所以我找到了这篇文章:流星面包屑

但是可以说我有以下几点:

<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)

好的,所以顶部的链接问题为我提供了基础知识。我正在尝试了解如何在此处做一些显而易见的事情。我想要第一个

  • 表示首页,并且从以下路径返回的结果:function()在其开头包含空的“”,“ page”,“ page”等。

    我希望能够包含适当的路径。明确地说,我很乐意做到这一点:

    <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)

    有没有人做过此事或找到了我还没有偶然发现的参考?

  • meteor iron-router

    1
    推荐指数
    1
    解决办法
    1085
    查看次数