重新渲染列表模板导致页面滚动到顶部

2024-06-19

我有一些模板,大致如下所示:

<template name="items">
  <div class="item-list">
    {{#each items}}
      {{> item}}
    {{/each}}
  <div>
  {{> loadMore}}
</template>

<template name="item">
  <div class="item" id="{{unique_string}}">
    <!-- stuff here -->
  </div>
</template>

<template name="loadMore">
  <a href="#">Load more...</a>
</template>

与相关的JavaScript:

Template.items.items = function() {
  return Items.find({}, {limit: Session.get("itemCount")});
}

Template.loadMore.events({
  "click": function() {
    Session.set("itemCount", Session.get("itemCount") + 10);
  }
})

所有这些或多或少地给了我一些几乎像无限滚动部分一样的东西。 (实际的代码还有一些移动部分,但这是重要的一点。)

每当我点击loadMore不过,它都会拉取更多数据and将我滚动回到页面顶部,而不是破坏无限滚动的目的。我可以添加一些 JavaScript 来向下滚动回到它应该在的位置,但是当页面快速跳转时,这会留下令人讨厌的闪烁。

我尝试过使用preserve在整个列表以及每个项目上div以防止它们更新,但这似乎并没有阻止滚动。我也尝试过{{#isolate}}几乎所有东西都被封锁,没有任何运气。

我可以在这里做些什么来使页面在重新渲染时不滚动吗?以不同的方式编写模板?某些方面preserve or {{#isolate}}我错过了什么?


页面滚动到顶部,因为您的<a href="#">Load more...</a>将使页面滚动到顶部。当您的 href 链接到“#”时,页面将滚动到带有#“元素 id”的 DOM 元素。单击仅包含“#”的链接将滚动到顶部。

您有两个选择:

  1. 防止点击事件的默认行为(简单选项):

    Template.loadMore.events({
    "click": function(event) {
      event.preventDefault();
      Session.set("itemCount", Session.get("itemCount") + 10);
    }   })
    

    这将停止页面重新加载

  2. 更好的是:使<a href="#">Load more...</a>链接到"#{{_id}}"然后页面将自动滚动到具有您提供的 id 的元素。这将需要对模板进行一些重组,并且可能需要模板中的辅助方法来为您提供最后一项的 id。但它会让您的页面准确加载到您想要的位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重新渲染列表模板导致页面滚动到顶部 的相关文章

  • 使用 account.ui 包验证电子邮件

    我想在创建某个用户时发送验证电子邮件 我使用帐户密码包 因此在我的代码中调用任何帐户方法 我在文档中读到我需要调用 Accounts sendVerificationEmail userId email 但问题是我不知道什么时候调用它 我尝
  • 使用 JQueryUI Autocomplete 和 Meteor 的规范方法

    使用 Meteor 我想了解使用 JQuery UI 自动完成处理大量服务器端数据的最有效方法 我有两个工作提案 想听听关于差异的意见 以及是否有更好的方法来做同样的事情 使用发布 订阅 Server Meteor publish auto
  • 带有 mrt 的流星 - 铁:路由器:没有这样的包

    我在学meteor 0 8 3并尝试使用一些基本的路由设置铁路由器 https github com EventedMind iron router My smart json包含 packages iron router git http
  • 如何将环境变量 PACKAGE_DIRS 链接到我的本地私有包?

    我正在尝试设置一个环境变量 以便当我正在处理 Meteor 应用程序时 并且我想将本地私有包链接到我的项目 Meteor 将查找我在本地环境中创建的包目录 我做的第一件事是创建一个包目录并向其中添加一个基本的测试包 Users scotty
  • MongoDB:如果使用 $addToSet 或 $push,是否应该预先分配文档?

    我一直在研究 MongoDB 我知道强烈建议在插入时完全构建 预分配 文档结构 这样将来对该文档的更改不需要移动该文档磁盘周围 这在使用 addToSet 或 push 时适用吗 例如 假设我有以下文档 id rsMH4GxtduZZfxQ
  • 4 级订阅嵌套在流星中

    我正在使用流星 这是我的架构 每个都是一个单独的集合 课程有很多讲座 讲座有很多问题 问题有很多答案 我想要一页可以显示给定课程的讲座 问题和答案 我可以毫无问题地显示课程的讲座 但在显示更多嵌套项目时遇到问题 我理想地希望拥有 讲座有 c
  • 为什么我的带有帐户包的 Meteor 应用程序没有发送验证电子邮件?

    我正在制作一个流星应用程序 并且添加了 mrt 帐户密码包以及 mrt 帐户 ui bootstrap dropdown 我添加了登录按钮 以便用户可以创建一个帐户 效果很好 我正在使用所有默认值 在服务器上我有代码 Accounts co
  • Enzyme - 测试嵌套组件是否正确呈现

    我正在尝试测试当通过简单的布尔值更新状态时 在父组件中其子组件是否正确呈现 在父组件下面 class Parent extends Component render const isReady this state const props
  • 为什么函数不可序列化?

    背景 在 Meteor 文档中Meteor call http docs meteor com full meteor call 它写道 如果您将回调函数作为最后一个参数 它不能作为该方法的参数 因为函数不可序列化 我跑过类似的东西Mete
  • MongoDB:如何在更新之前对查询进行排序

    我正在编写一个 Meteor Node js 应用程序 它在后端使用 MongoDB 在我的代码中的某个时刻 我需要更新specific集合中的文档 我需要使用 Mongo 的 update 方法 但我在传递正确的 复杂的 查询以缩小到该特
  • 如何在流星运行时编译新模板?

    如何使用 Handlebars js 在流星中运行时编译新模板 var source
  • Meteor 独特客户端集合的发布/订阅策略

    使用 Meteor 我想知道如何最好地处理共享相同服务器端数据库集合的不同客户端集合 考虑以下示例 我有一个User集合 在我的客户端我有一个好友用户列表我有一个搜索功能 可以对整个用户数据库执行查询 返回一个与查询匹配的用户名列表 在发布
  • MeteorJS:用户集合如何公开新字段

    我在用户集合中添加了新字段 但是当我在客户端 Meteor user cart 中访问它时 cart 是我的新字段 其未定义 如何公开新字段 购物车 以便可以在客户端中访问 最简单的方法是添加一个null发布者将自动发送数据 无需订阅 请务
  • Windows 8.1 上的 Meteor 构建错误

    我已经在 Windows 8 1 64 位上安装了 Meteor 以继续开发现有的 Meteor 应用程序 但是 我无法启动它 Problem 我运行 meteor run 它启动代理 MongoDB 选择包 在最后一步 构建应用程序 之后
  • 无法在 Windows 8.1 Pro 上为 Meteor 添加 Iron 路由器包

    我在Windows上安装了meteorhttp win meteor com http win meteor com 我试图通过下载以下存储库在 Windows 8 1 上为 Meteor 安装 Iron 路由器包 git clone ht
  • 重新渲染列表模板导致页面滚动到顶部

    我有一些模板 大致如下所示
  • handlebars:如何访问数组?

    我有以下简化文件 channel Channelname users userId 1 userId 2 userId 3 我如何访问 userId each 像这样循环 each channels channel each channel
  • React - 无法读取未定义的属性[重复]

    这个问题在这里已经有答案了 通常 当我单击子组件中的菜单项时 它会调用 this handlesort 这是一个本地函数 处理排序从我的父组件中获取 onReorder 属性 onReorder 调用名为 reOrder 的本地函数 它设置
  • Meteor 中的子域支持(如 slack - http://team.slack.com)

    流星中的子域支持 就像 slack http team slack com http team slack com 就像在 Slack 中一样 我的应用程序用户可以创建自己的子域 唯一 并且根据子域应该加载数据 并且围绕此应用程序将继续进行
  • Meteor.js 登录事件

    因此 我对 Meteor 框架和 JavaScript 总体来说还很陌生 但我正在使用该框架开发一个小项目 以尝试让自己达到标准 基本上我正在开发一个微博客网站 目前 用户可以通过多种服务登录 fb google 等 我通过插入所需 url

随机推荐

  • 通过插件以编程方式修改 Eclipse 工作区和 CDT 选项

    我想从插件中以编程方式修改 Eclipse 工作区 添加现有项目是我的主要请求 另外 我想从该插件中修改 CDT 选项 环境 索引器选项 有谁知道如何最好地做到这一点或者可以向我指出有关该主题的良好文档 EDIT 实际上我不想修改 CDT
  • PyQt:数据不可 JSON 序列化

    我是 PyQt GUI 的新手 我想获取a的数据QLineEdit文本框 为此我正在使用text 方法 我正在获取数据 但数据类型是QString 我需要将其作为 json 数据传输到服务器 为此我使用json dumps 方法 但我收到错
  • Android Studio 无法运行 Xcode 模拟器

    我正在尝试使用 Xcode iPhone 模拟器模拟我的 Flutter 应用程序 但收到此错误 在升级 Android Studio 和 Xcode 之前 它运行良好 Launching lib main dart on iPhone X
  • 从 UTC 转换为本地时区给出错误结果

    背景我需要将格式为 HH mm 的时间字符串从 UTC 转换为本地时区 例如 如果 UTC 时间为 09 00 则当地时间 斯德哥尔摩 欧洲 应提前两个小时 Problem当我将 09 00 UTC 转换为斯德哥尔摩 欧洲时间时 我得到 1
  • 如何从另一个片段运行一个片段

    我有一个主要活动 活动 1 它会膨胀导航抽屉 带有列表视图列出项目 抽屉由片段 MenuFragment 运行 以便我可以根据选择的项目来扩展任何 xml 布局 现在我的问题是当用户从抽屉中选择一个项目时如何运行另一个活动 活动 2 因为抽
  • const_cast 的自动类型推导不起作用

    在我的工作中使用const cast在某些情况下是不可避免的 现在我必须const cast一些非常复杂的类型 实际上我不想在const cast
  • 删除 arrayList 中的项目,java.lang.UnsupportedOperationException

    我想删除数组列表选择位置中的项目 我的代码是 List
  • 按列表中(不在)中的索引值对 Pandas 数据帧进行切片

    我有一个pandas数据框 df 我想选择所有索引df那是not在列表中 blacklist 现在 我使用列表理解来创建所需的切片标签 ix i for i in df index if i not in blacklist df sele
  • 如何向 ExtJS 应用添加自定义字体?

    同事 请建议如何向 ExtJS 添加自定义字体 以便它与应用程序一起加载 如果用户的系统中没有安装此字体 必须将其加载到哪个文件夹 以及应将其包含在何处以及如何包含 谢谢各位的解答 您只需添加新的字体文件即可myApp resources
  • 如何让 PowerShell 等待 Invoke-Item 完成?

    如何让 PowerShell 等待 Invoke Item 调用完成 我正在调用一个不可执行的项目 因此我需要使用 Invoke Item 来打开它 只需使用Start Process wait 例如Start Process wait c
  • tkinter - 使用按钮在帧之间来回切换

    我需要功能 最好是一个功能 当按下下一页和后退按钮时可以在页面之间来回切换 我想这可以通过将布尔变量分配给后退和下一页按钮来完成 不确定是否可以这样做 来确定您是否要前进或后退所有页面的有序列表 需要知道当前升高的框架的索引 索引可用于找出
  • 在 Chrome 中,应用于包含图像的锚点的轮廓高度不正确

    对于我正在开发的网站 我希望当链接聚焦 悬停 活动时 链接周围会出现虚线轮廓 我希望文本和图像链接发生这种情况 我遇到的问题是 虽然我的代码在 Firefox 和 IE 中运行良好 但在 Chrome 7 0 517 41 中 虚线轮廓与我
  • 带数据透视表的 Laravel 查询生成器

    我有两个带有数据透视表的表 Table tours id name country id featured Table countries id name 数据透视表country tour id country id tour id 我想
  • Jasmine 测试中模拟 window.location.reload

    我创建了一个window location reload我的 JavaScript 中的函数 我需要在 Jasmine 中测试时模拟重新加载函数 因为它不断循环 当我跑步时测试进展顺利grunt jenkins 但在浏览器 mozilla
  • 如何通过 COM 将长数组从 VB6 传递到 C#

    我需要将 int 或 long 数组 无关紧要 从 VB6 应用程序传递到 C COM Visible 类 我尝试在 C 中声明接口 如下所示 void Subscribe MarshalAs UnmanagedType SafeArray
  • 如何强制串行端口写入方法在发送数据之前等待线路清除?

    以下是我正在尝试做的一些背景 打开从移动设备到蓝牙打印机的串行端口 将 EPL 2 表格发送到蓝牙打印机 以便它了解如何处理即将接收的数据 收到表格后 将一些数据发送到打印机 这些数据将打印在标签纸上 根据需要多次重复步骤 3 打印每个标签
  • 即使没有结果也返回一个值

    我有这种简单的查询 它返回给定 id 的非空整数字段 SELECT field1 FROM table WHERE id 123 LIMIT 1 问题是如果找不到 id 结果集就是空的 我需要查询始终返回一个值 即使没有结果 我有这个东西工
  • 如何使用div绘制曲线?

    我需要使用 CSS 绘制两条曲线 我尝试过组装一些divs 使用CSSborder radius绘制弧形面板 但结果很糟糕 还有更好的算术吗 正如我之前在评论中提到的 请不要使用CSS用于实现复杂的曲线和形状 虽然仍然可以使用 CSS 来实
  • 添加 Google Play Services 9.0.0 后 Dex 文件超过 64k

    我按照 Firebase 指南添加 FCM 因此我将以下依赖项添加到我的应用程序 gradle 中 compile com google android gms play services 9 0 0 apply plugin com go
  • 重新渲染列表模板导致页面滚动到顶部

    我有一些模板 大致如下所示