【问题标题】:How do I get at the values for multiple data parameters in Meteor iron-router routes?如何获取 Meteor Iron-router 路由中多个数据参数的值?
【发布时间】:2014-08-20 15:52:36
【问题描述】:

我为我的小型 Meteor 应用定义了以下路线:

this.route('browse-class', {
    path: '/browse/:_class',
    data: {
        theClass: function() { return this.params._class; },
        numBooks: function() { return Books.find({"class": this.params._class},{sort:{"createdAt": 1}}).count(); },
        books: function() { return Books.find({"class": this.params._class},{sort:{"createdAt": 1}}); }
    }
});

我不明白如何访问数据的返回值。即,numBooks。它应该返回一个整数,但我似乎无法让它在我的模板帮助器中使用以下代码:

Template.browseClass.helpers({

    booksFound: function() {
        return this.data.numBooks > 0;
    },

    theOwner: function() {
        theUser = Meteor.users.findOne({_id: this.owner});
        return theUser.username;
    }

});

当我 console.log() 我正在比较的值时,它似乎试图比较函数而不是它返回的值或什么?我有点困惑。

任何想法将不胜感激。谢谢!

【问题讨论】:

    标签: javascript meteor iron-router


    【解决方案1】:

    数据应该像这样在你的路由中定义为一个函数:

    data:function(){
      var booksCursor=Books.find(...);
      return {
        theClass:this.params._class,
        numBooks:booksCursor.count(),
        books:booksCursor
      };
    }
    

    那么如果你指定browseClass作为路由模板,它将以data()的结果作为数据上下文进行渲染,所以你可以像这样访问属性:

    Template.browseClass.helpers({
        booksFound:function(){
          return this.numBooks>0;
        }
    });
    
    <template name="browseClass">
      Number of books : {{numBooks}}
      {{#each books}}
        {{...}}
      {{/each}}
    </template>
    

    【讨论】:

    • 太棒了。我知道我真的很接近我需要做的事情,但这确实简化了事情。非常感谢。立即测试。
    • 刚才在我的应用程序中测试了这个,完美无瑕,绝对清理了我的路线。非常感谢!
    猜你喜欢
    • 2014-12-31
    • 2015-08-10
    • 1970-01-01
    • 2013-09-10
    • 2015-01-07
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    相关资源
    最近更新 更多