在Meteor.js中通过同一路线内的锚点标签更新视图
Update view via anchor tag within the same route in Meteor.js
我一直在Meteor.js中使用URL参数实现分页。但当我单击锚定标签移动到新页面时,应用程序不会更新其视图。单击其他标记时,视图将正确更新。
这种行为真的很奇怪,因为(1)至少它能识别onClick(我通过附加事件处理程序检查了这一点)(2)尽管视图在第二次尝试时更新了,但它必须是第三个元素。(假设我在第1页。如果我点击第2页,它不会改变。如果我一次又一次地点击第2页,它不会改变。但当我点击第3页时,它会改变。)
我认为问题出在Router.route附近,因为除了同一条路线之外,它运行得很好。
client.js
Router.route('/', {
name: 'index',
template: 'index',
layoutTemplate: 'ApplicationLayout',
waitOn: function() {
var page = getQueryParams(window.location.search).page;
page = page === undefined? 1: page;
return Meteor.subscribe('recentPosts', page);
},
data: function() {
return {
posts: Posts.find({}, {
sort: {publishedAt: -1}
})
};
},
onBeforeAction: function() {
Meteor.call('postsCount', function(e, r) {
Session.set('postsCount', r);
});
this.next();
}
});
分页.html
<template name="pagination">
<li class="page {{#if isCurrent page}}active{{/if}}">
<a href="/?page={{page}}">
{{page}}
</a>
</li>
</template>
我的URL方案是domain/?page=<page_id>
。此外,我的路线在刷新时运行良好。
为了解决您的问题,我怀疑您需要更改在waitOn函数中获取当前页面的方式:
var page = this.getParams().query.page;
getParams()是被动的,而this.params不是(你也没有使用——你应该经过路由器),所以地址栏中的路由正在更改,但订阅没有更新。
相关文章:
- $routeParams在传递到新视图时未定义&控制器
- 如何在渲染新视图之前关闭所有事件
- 从Backbone中的另一个视图调用新视图
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- 主干新视图反映旧模型数据
- 创建新视图时调用呈现函数
- 离子替换新视图的选项卡和页脚
- YII:如何将参数列表从js传递到控制器,并通过传递另一个列表来调用新视图
- AngularJS-关闭tile并从ngRepeat指令AngularJS中的模型加载新视图
- 美元AngularJs http.post不渲染新视图
- Angular UI Router新视图,相同的URL
- AngularJS:在Promise被解析后,为新视图操作DOM
- 骨干移除和新视图不会重置其属性数组内容
- 尝试将数据加载到新视图中
- 将js变量传递给控制器并在ci中构建新视图
- 在类似视图上使用class而不是id创建新视图
- React Login,一旦授权成功,移动到新视图
- Md-dialog弹出框(angular-material)作为一个新视图(约曼)加载进来
- 我的Backbone应用程序会闪烁“白色”.因为我在开始一个新视图之前先删除了视图
- 重定向到新视图时,保留rails中验证的错误消息