标签: iron-router

把手+流星+铁路由器

我正在为我的流星项目使用铁路由器,一切都很顺利,但我只是遇到了一些奇怪的行为.

我有一个循环设置为一个看起来像这样的项目列表.

{{#each list_items}}
  <div>{{user.username}}
    <a href="{{link}}">Click here!</a>
  </div>
{{/each}}
Run Code Online (Sandbox Code Playgroud)

我的用户的JSON对象如下所示:

{
  user: {
      username: jdoe
    },
  images: {
    low-res-url: http://example.com
  },
  link: http://example.com/profile
}
Run Code Online (Sandbox Code Playgroud)

现在{{user.username}}按预期显示,但当我尝试将{{link}}放入href时,我从铁路由器说出错

"You called Router.path for a route named undefined but that that route doesn't seem to exist. Are you sure you created it?" 
Run Code Online (Sandbox Code Playgroud)

任何帮助或建议将不胜感激.

handlebars.js meteor iron-router

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

了解新的mongo id并将其与铁路由器一起使用

我有一个寻找帖子的简单邮政路线_id.问题是pathFor助手创建了这样的路径:

ObjectID("52e16453431fc2fba4b6d6a8")
Run Code Online (Sandbox Code Playgroud)

我猜mongoDB插入已被更改,现在该_id对象在其中包含另一个对象调用_str.

这是我的路线:

this.route("post", {
        path: "/post/:_id",

        waitOn:function(){
            NProgress.start();
            Meteor.subscribe("Teams");
        },

        before: function () {
            NProgress.done();
        },

        data: function () {
            return Posts.findOne({_id: this.params._id});
        }
    });
Run Code Online (Sandbox Code Playgroud)

目前,它创建了一个href像:

 post/ObjectID("52e16453431fc2fba4b6d6a8")
Run Code Online (Sandbox Code Playgroud)

点击它打开一个网址

post/ObjectID("52e16453431fc2fba4b6d6a8") 
Run Code Online (Sandbox Code Playgroud)

但是,我得到了"NotFound"模板而不是帖子.

我怎样才能解决这个问题?

mongodb meteor iron-router

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

如何编写Iron-router嵌套模板?

我有2个模板:

1)mainLayout.html- >所有页面必须使用的一般布局.(例如页面标题,导航栏,页脚)

Router.configure({
  layoutTemplate: 'mainLayout'
})

<template name="mainLayout">
  {{> header}}
  <div class="container-fluid">
    {{> yield}}
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

2)specialLayout.html- >自定义布局继承main-layout.html但附加模板(例如侧面/标签菜单)

我该如何定义specialLayout?请注意,specialLayout应该定义标题,导航栏和页脚mainLayout.

如果我有想要使用的路线X,我该specialLayout怎么写呢?

meteor iron-router meteor-blaze

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

自定义Meteor注册模板

在我的应用程序中,我想为用户播种数据库并向他们发送注册链接以激活他们的帐户(并选择密码).我还希望他们验证/更改一些配置文件数据.

在服务器上我按如下方式为数据库播种:

Meteor.startup(function () {
  if(Meteor.users.find().count() === 0) {
    var user_id = Accounts.createUser({ email: 'some@email.com', profile: { some: 'profile' } });
    Accounts.sendEnrollmentEmail(user_id);
  }
})
Run Code Online (Sandbox Code Playgroud)

注册链接按预期发送,但我想为单击电子邮件中的URL时创建自定义模板.最好由铁路由器处理.(不使用accounts-ui包).

我尝试过将用户重定向到这样的自定义路线:

var doneCallback, token;

Accounts.onEnrollmentLink(function (token, done) {
  doneCallback = done;
  token = token;
  Router.go('MemberEnroll')
});
Run Code Online (Sandbox Code Playgroud)

哪个不起作用(它改变了网址但没有渲染我的模板)

我还尝试更改服务器上的注册URL,如下所示:

Accounts.urls.enrollAccount = function (token) {
  return Meteor.absoluteUrl('members/enroll/' + token);
};
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,Accounts.onEnrollmentLink回调不会触发.此外,更改URL没有记录,所以我不确定它是一个好的做法.

任何帮助表示赞赏.

meteor iron-router meteor-accounts

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

使用Meteor和Iron Router创建活动导航状态

我想在Iron Router正在呈现的导航列表项中添加一个"active"类.

这是我的标记:

<ul>
  <li>
    {{#linkTo route="option1"}}
      <span class="fa fa-fw fa-option"></span>
      Option 1
    {{/linkTo}}
  </li><li>
    {{#linkTo route="option2"}}
      <span class="fa fa-fw fa-option"></span>
      Option 2
    {{/linkTo}}
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我已经阅读了指南和各种文章,但无法在任何地方找到这个.假设我需要某种帮手?

templating meteor iron-router

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

流星铁路由器路径或等效于助手

我只是试图在帮助器中按名称引用铁路由器路由,而不是硬编码URL.因此,当用户单击按钮时,它们将被重定向到具有来自按钮的data-id属性的id的项路由.

items.html

<button class="btn btn-default btn-xs pull-right" data-id={{_id}}>View</button>
Run Code Online (Sandbox Code Playgroud)

items.js

Template.items.events({
  'click button': function(e) {
    // This works but is hard coding the path
    Router.go("/item/" + ($(e.currentTarget).data('id')));
    // This doesn't work but is there an alternative method of doing this
    Router.go(pathFor('item' id=_id))
  }
});
Run Code Online (Sandbox Code Playgroud)

router.js

Router.route('/item/:_id', {
  name: 'item'
});
Run Code Online (Sandbox Code Playgroud)

我当然可以在这样的模板中使用pathFor:

<a href="{{pathFor 'item' id=_id}}">View</a>
Run Code Online (Sandbox Code Playgroud)

或者指定数据属性:

<button class="btn btn-default btn-xs pull-right" data-path={{pathFor 'item' id=_id}}>View</button>
Run Code Online (Sandbox Code Playgroud)

但是想知道是否有替代/更简洁的方法来做到这一点?如果不是,我可能会恢复使用标签.

meteor iron-router

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

使用AutoForm和Iron Router在Meteor上检查插入后成功重定向提交表单的标准模式?

我正在使用Meteor与AutoForm和铁路由器.

我有一个autoform用于插入记录,我想重定向到另一个页面以在成功插入后查看记录. 什么是普遍接受的方式?

如果我使用标准的autoform插件,如:

{{#autoForm collection="Articles" id="articleSubmit" type="insert"}} 
Run Code Online (Sandbox Code Playgroud)

我看不出如何重定向?

如果我使用'method'类型,如下所示:

{{#autoForm collection="Articles" id="articleSubmit" type="method"}} 
Run Code Online (Sandbox Code Playgroud)

然后我必须编写一个不特别干的插入方法.

javascript meteor iron-router meteor-autoform

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

流星中的子域支持(与slack一样 - http://team.slack.com)

流星中的子域支持(与slack一样 - http://team.slack.com)

在松弛时,我的应用程序用户可以创建自己的子域(唯一的),并根据子域应该加载数据,并在此周围应用程序将继续.我可以使用像http://slack.com?team=TeamName这样的东西,但我认为子域会更干净,更好.

任何建议/指针.

谢谢.

meteor iron-router

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

下一个路线不是从页面顶部打开(向下滚动).为什么?

谁有人遇到同样的问题?我正在使用带有模板级订阅的铁路由器.
例如.我有一个很长的页面"项目列表",我可以向下滚动.然后我点击底部某处的某个项目,然后下一个模板呈现低于应有的值.
想象一下,你在youtube上搜索,向下滚动结果,然后你点击一个视频片段,但它不是从顶部打开而是低,所以你需要滚动到顶部才能看到视频.


我试图将"滚动到顶部"脚本放入onRendered回调中,但这种"跳跃"可以用肉眼识别.所以它变得更糟.


(更新)我现在找到了这个解决方案:

Router.onBeforeAction(function() {
  $(window).scrollTop(0);
  this.next();
});
Run Code Online (Sandbox Code Playgroud)

meteor iron-router

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

Iron Router,更改URL而不更改浏览器历史记录

使用铁路由器版本0.9.4如何在不更改浏览器历史记录的情况下更新URL查询参数?

我有一堆选择框可以更新URL查询参数.在某些情况下,我想更新URL而不在window.history中添加额外的条目.很多模板都依赖于Router.current().params反应变量,因此我需要在更改路径时更新它.

meteor iron-router

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