【发布时间】:2014-07-08 11:56:06
【问题描述】:
我见过类似的问题,但无法将其应用于我的案例...
我用iron-router 定义了一个路线:
this.route('home', {
path: '/',
template: 'home',
waitOn: function(){
return [Meteor.subscribe('books'),Meteor.subscribe('authors'))];
},
onBeforeAction: function(){
Session.set('search_keywords', this.params.search);
}
});
在我的home.js 文件中,我有一个助手可以像这样显示books:
Template.booksList.helpers({
books: function () {
if(Session.get("search_keywords")){
keywords = new RegExp(Session.get("search_keywords"), "i");
var result = Books.find({$or:[{name:keywords},{description:keywords},{tags:keywords}]},{sort: {updatedAt: 1}});
if(result.count()===0){
console.log('no results found')
return [];
}else{
return result;
}
}
}
});
在home.html:
<template name="booksList">
<div class="row">
{{#each books}}
{{> bookDetail}}
{{/each}}
</div>
</template>
目的是从http://mydomain.com/?search=Happy%20Potter 之类的网址访问视图以查找所有哈利波特书籍。
一些我不明白的...页面被渲染了两次,第一次说没有结果然后显示结果。 你明白为什么吗?
谢谢!
【问题讨论】:
-
是的,这很正常。如果您不喜欢这样,那么您可以查看 Iron-router 的
loadTemplate选项。在您waitOn的数据到达之前,它将显示不同的模板。
标签: javascript meteor meteor-blaze