【问题标题】:onBeforeAction running too lateonBeforeAction 运行太晚
【发布时间】:2016-03-13 22:34:51
【问题描述】:

我有一个带有帮助器的页面,该帮助器依赖于在使用 onBeforeAction 进行路由时设置的 id_sell 变量。当前的问题是帮助程序在设置变量之前运行。

this.route('/chat_id', {
    path: '/chat/:_id',
    template: 'Messages',
    layoutTemplate: 'LayoutMessages',
    onBeforeAction: function() {

      id = Session.get("recipientId");
      id_sell = this.params._id;
      this.next();
       }
    })

如您所见,这里设置了这个 id_sell 变量。

不幸的是我得到了错误

模板助手中的异常:ReferenceError: id_sell is not defined

当我的助手尝试加载全局变量的值时。

如何解决这个加载错误

【问题讨论】:

  • 如果我了解您正在尝试获取用户选择的聊天的 chat._id?然后使用它从集合中提取聊天。是这个主意吗?
  • 我正在尝试在帮助程序运行之前获取在我的路由中设置的 id_sell var

标签: javascript meteor helpers


【解决方案1】:

看起来你正在使用 Iron 路由器,在这种情况下你可以将你的路由定义更改为

this.route('/chat_id', {
    path: '/chat/:_id',
    template: 'Messages',
    layoutTemplate: 'LayoutMessages',
    data: function() {
        return {
            id: this.params._id
        }
   }
})

Messages 模板中,您可以访问Template.currentData().id 来访问变量。

然后,如果你想从集合中加载一些东西,你可以改变你的路线到

this.route('/chat_id', {
    path: '/chat/:_id',
    template: 'Messages',
    layoutTemplate: 'LayoutMessages',
    waitOn: function() {
        return Meteor.subscribe('messages');
    },
    data: function() {
        return {
            id: this.params._id,
            messages: Messages.find({ chatId: this.params._id })
        };
    }
});

然后模板将有 Template.currentData().messages 可用,{{#each messages}} 将在 html 中工作。

(显然,将messagesMessages 替换为您的出版物和收藏的名称)。

最后,您可以将this.params._id 传递给Meteor.subscribe(...) 调用,以仅订阅您关心的项目 - 但这是另一回事。

【讨论】:

    【解决方案2】:

    您可以使用 Session 在帮助程序运行之前获取此变量的值。例如,

    lib/router.js

    Router.route('/chat/:_id', function(){
        Session.set("chatId", this.params._id);
        this.render("chatTemplate", {to:"main"});
    });
    

    main.js

    这里使用:

    var id_sell = Session.get("chatId");
    

    并且变量会在助手运行之前设置在这里。

    【讨论】:

      猜你喜欢
      • 2014-11-14
      • 2012-12-11
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多