Meteor JS:列表正在填充收集结果
这是我的模板:Meteor JS:列表正在填充收集结果,meteor,handlebars.js,Meteor,Handlebars.js,这是我的模板: {{{#如果工作失败了} {{{#每个工作} {{地址} {{{jobUrl url title}}} {{公司} {{dateacquired}} {{/每个}} {{else} {{>微调器} {{/if} {{{#如果工作失败了} {{{#如果作业} 每页10张 每页25英镑 每页50英镑 每页100英镑 {{/if} {{{pagination}}} {{/if} 客户端JS: Deps.autorun(函数(){ Meteor.订阅(“城市”); Meteo
{{{#如果工作失败了}
{{{#每个工作}
-
{{地址}
{{{jobUrl url title}}}
{{公司}
{{dateacquired}}
{{/每个}}
{{else}
{{>微调器}
{{/if}
{{{#如果工作失败了}
{{{#如果作业}
每页10张
每页25英镑
每页50英镑
每页100英镑
{{/if}
{{{pagination}}}
{{/if}
客户端JS:
Deps.autorun(函数(){
Meteor.订阅(“城市”);
Meteor.subscribe('jobs',Session.get('CurrentIndustryNet'),function(){
Session.set('jobsLoaded',true);
});
});
Template.list.jobsLoaded=函数(){
返回Session.equals('jobsLoaded',true);
};
Template.list.rendered=函数(){
var select=$(“#每页”);
var option=select.attr(“u val”);
$('option[value=“”+option+'“]').attr(“选定的”、“选定的”);
select.selectpicker({
样式:“btn info col-md-4”,
菜单样式:“下拉反向”
});
}
Template.list.jobs=函数(){
副自动运行(函数(){
var jobs=jobs.find();
if(Session.get('CurrentIndustryNet')){
jobs=jobs.find({onet:Session.get('CurrentIndustryNet'))});
}
get('jobCount',jobs.count());
返回Pagination.collection(jobs.fetch());
});
}
服务器端JS:
Meteor.publish('jobs',函数(onet_代码){
var cursor,options={sort:{dateacquired:-1}};
控制台日志(onet_代码);
如果(onet_代码){
cursor=Jobs.find({onet:onet_code},选项);
}否则{
cursor=Jobs.find({},options);
}
返回光标;
});
Meteor.publish('cities',function(){
返回城市。查找({},{sort:{pop:-1},限制:100});
});
由于某种原因,当您加载页面时,会出现分页,但是{{{{each jobs}}
中没有填充集合结果
更新:
Template.list.jobs=function(){
变量选项={},作业;
if(Session.get('currentMapArea')){
var c=Cities.findOne({u id:Session.get('currentMapArea'));
options.address=c.city.capitalize()+“,”+c.state;
}
if(Session.get('CurrentIndustryNet')){
options.onet=Session.get('CurrentIndustryNet');
}
如果($.isEmptyObject(选项)){
jobs=jobs.find();
}否则{
jobs=jobs.find(选项);
}
Session.set('jobCount',jobs.count());
返回Pagination.collection(jobs.fetch());
}
更新3:
分页:
Template.list.pagination = function() {
return Pagination.links('/jobs', Session.get('jobCount') || 1, {currentPage: Session.get('page') || 1, perPage: Session.get('perPage') || 10});
}
<template name="list">
<div class="col-md-12">
{{#if jobsReady}}
<ul class="list-group" id="jobs">
{{#each jobs}}
<li>
<span class="pull-right">{{address}}</span>
<span id="jobTitle">{{{ jobUrl url title }}}</span>
<span id="company">{{company}}</span>
<span id="date"><em>{{dateacquired}}</em></span>
</li>
{{/each}}
</ul>
{{else}}
{{> spinner}}
{{/if}}
</div>
{{#if jobsReady}}
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-2">
<select id="perPage" class="selectpicker select-block" _val="{{selected_opt}}">
<option value="10">10 Per Page</option>
<option value="25">25 Per Page</option>
<option value="50">50 Per Page</option>
<option value="100">100 Per Page</option>
</select>
</div>
<div class="col-md-10">
{{{pagination}}}
</div>
</div>
</div>
{{/if}}
</div>
</template>
Template.list.pagination=function(){
返回分页.links('/jobs',Session.get('jobCount')|1,{currentPage:Session.get('page')|1,perPage:Session.get('perPage')|10});
}
{{{#如果作业重复}
{{{#每个工作}
-
{{地址}
{{{jobUrl url title}}}
{{公司}
{{dateacquired}}
{{/每个}}
{{else}
{{>微调器}
{{/if}
{{{#如果作业重复}
每页10张
每页25英镑
每页50英镑
每页100英镑
{{{pagination}}}
{{/if}
我相信这段代码有问题——它不会返回任何信息:
Template.list.jobs=function(){
副自动运行(函数(){
var jobs=jobs.find();
if(Session.get('CurrentIndustryNet')){
jobs=jobs.find({onet:Session.get('CurrentIndustryNet'))});
}
get('jobCount',jobs.count());
返回Pagination.collection(jobs.fetch());
});
}
思考返回的功能。它从Deps.autorun
中的函数返回。外部函数不返回任何内容
我认为您可以简单地丢失Deps.autorun
并执行此操作,这仍然是被动的:
Template.list.jobs=function(){
var jobs=jobs.find();
if(Session.get('CurrentIndustryNet')){
jobs=jobs.find({onet:Session.get('CurrentIndustryNet'))});
}
Session.get('jobCount',jobs.count());//这应该是一个'Session.set'吗?
返回Pagination.collection(jobs.fetch());
}
还要注意评论中的问题。谢谢!用我的当前代码更新了我的答案。。。它仍然不工作分页.集合是如何定义的?它做什么?我正在使用这个包进行分页:在哪里初始化模板.list.pagination
?我不知道那个包,但可能有必要在他们的演示中设置它。我更新了我的问题,以包括initialization和作业
在客户端上不是空的,对吗?