读取会话变量而不使上下文无效

2024-03-05

有没有办法在会话变量发生变化时读取会话变量而无需重新渲染模板?

场景:

我使用 jQuery 动态更改元素的样式,但是当创建新元素时,我想设置其默认样式(我知道在渲染元素时我可以调用相同的 jQuery 命令)

Example:

<template name="image">
    <!-- How can I avoid -height- being reactive -->
    <img src="img.jpg" style="height: {{height}}">
</template>

Templates.image.height = function() {
    return Session.get("height");
};

Templates.controls.events = {
    'click #btn': function() {
        // Change the height of all exiting images
        $("img").css({height: Session.get("height")});
    }
};

我希望添加的每个新图像都将高度存储在会话变量中,而无需重新渲染img。我能想到的所有解决方案都感觉像是黑客。


会话将其值存储在Session.keys,但它们是序列化的。要反序列化它们,您可以使用parse函数来自https://github.com/meteor/meteor/blob/master/packages/session/session.js https://github.com/meteor/meteor/blob/master/packages/session/session.js :

var parse = function (serialized) {
  if (serialized === undefined || serialized === 'undefined')
    return undefined;
  return EJSON.parse(serialized);
};

然后,代替Session.get('key-name'), do: parse(Session.keys['key-name'])。这应该做同样的事情Session.get而不会使任何上下文无效。将所有这些放在一起,这是一种似乎有效的方法:

Session._parse = function (serialized) {
  if (serialized === undefined || serialized === 'undefined')
    return undefined;
  return EJSON.parse(serialized);
};

Session.getNonReactive = function (key) {
  var self = this;
  return self._parse(self.keys[key]);
};    

更新 2013 年 3 月 13 日: Meteor 刚刚发布了 v0.5.8,并带来了新功能。这是执行此操作的新方法:

Session.getNonReactive = function (key) {
  return Deps.nonreactive(function () { return Session.get(key); });
};  

更新 15/2/2016Meter 目前已被弃用,但它仍然有效。使用Tracker反而:

Session.getNonReactive = function (key) {
  return Tracker.nonreactive(function () { return Session.get(key); });
};  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取会话变量而不使上下文无效 的相关文章

  • Accounts.onCreateUser 在创建新用户时添加额外属性,好的做法吗?

    我正在创建新用户Accounts createUser http docs meteor com full accounts createuser如果你不做任何花哨的事情 它就会正常工作 但我想向新用户添加一些文档中未列出的其他字段 这是我
  • Meteor 更新卡在下载包中

    我正在尝试更新到 Meteor 1 2 但是当我运行 Meteor update 时 它 开始运行并到达 Downloading 8 packages 然后旋转器就停止了 这样持续了20分钟左右 我尝试过退出该过程并再次启动它 但结果相同
  • 如何将环境变量 PACKAGE_DIRS 链接到我的本地私有包?

    我正在尝试设置一个环境变量 以便当我正在处理 Meteor 应用程序时 并且我想将本地私有包链接到我的项目 Meteor 将查找我在本地环境中创建的包目录 我做的第一件事是创建一个包目录并向其中添加一个基本的测试包 Users scotty
  • Meteor.setTimeout 和 Meteor.methods 之间的并发

    在我的 Meteor 应用程序中实现回合制多人游戏服务器 客户端通过发布 订阅接收游戏状态 并且可以调用 Meteor 方法sendTurn将回合数据发送到服务器 他们无法直接更新游戏状态集合 var endRound function g
  • 4 级订阅嵌套在流星中

    我正在使用流星 这是我的架构 每个都是一个单独的集合 课程有很多讲座 讲座有很多问题 问题有很多答案 我想要一页可以显示给定课程的讲座 问题和答案 我可以毫无问题地显示课程的讲座 但在显示更多嵌套项目时遇到问题 我理想地希望拥有 讲座有 c
  • 流星图像、CSS、“普通”Web 服务

    我经常看到这个问题出现 如何在我的 Meteor 网站上放置图像 如何使用 Meteor 托管 标准 网页内容 我尝试添加一个 img src img myimage png 标签但没有图像显示 如何在 Meteor 站点上托管一些文件 将
  • 如何在模板创建的元素上触发 JQuery .draggable() ?

    我在 Html 文件中有一个标准模板 例如
  • 如何调试性能问题/优化您的流星应用程序

    我刚刚将 Meteor 应用程序部署到 Digital Ocean 上的生产服务器上 我注意到 对于大约 7500 个文档 完全获取对象 有选择地仅获取 3 个字段 并填充自动完成数据大约需要 3 5 秒 我相信对于如此数量的数据来说 它应
  • 为什么函数不可序列化?

    背景 在 Meteor 文档中Meteor call http docs meteor com full meteor call 它写道 如果您将回调函数作为最后一个参数 它不能作为该方法的参数 因为函数不可序列化 我跑过类似的东西Mete
  • 在 Meteor 中重绘模板期间加载消息

    我构建了我的第一个 Meteor 应用程序 我喜欢它 不过 现在它已经有了真实的生产数据 所以速度有点慢 我收到报告称 当我点击此按钮时没有任何反应 有什么方法可以在模板重绘期间显示加载消息 以便用户知道正在发生什么事情 为了进一步说明 请
  • 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
  • Meteor:使用 Sessions 和 ReactiveVar

    你应该什么时候使用Session and ReactiveVar I use Session变量作为组件之间的通信媒介 让我们以 Stackoverflow 为例 我标记了三个假设的组件 让我们看看filters成分 如果您点击Tags那么
  • 如何在 Meteor 应用程序之间共享 MongoDB 集合?

    我希望能够为我的项目提供一个管理应用程序和一个客户端应用程序 理想情况下 我希望能够拥有一个共享的 MongoDB 集合 我怎样才能做到这一点 我尝试在两个不同的应用程序中创建具有相同名称的集合 但发现 Meteor 会将数据分开 知道我能
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • React - 无法读取未定义的属性[重复]

    这个问题在这里已经有答案了 通常 当我单击子组件中的菜单项时 它会调用 this handlesort 这是一个本地函数 处理排序从我的父组件中获取 onReorder 属性 onReorder 调用名为 reOrder 的本地函数 它设置
  • 返回游标数组不显示任何结果

    我试图通过这样做来解决两个集合的 连接 foundUsers function var searchUser Session get searchUser user search criteria var usf User find sea
  • 流星与承诺

    我一直在尝试养成使用 Promise 的习惯 但在尝试在 Meteor 上下文中的服务器端代码中使用它们时遇到了问题 这就是问题 if Meteor isServer Meteor startup function code to run
  • 在本地主机上设置 (https) SSL 以进行流星开发

    如何创建自签名 SSL 证书以在 mac 10 9 上的本地服务器上使用 我需要我的本地主机作为https localhost 我正在使用 linkedin API 这里解释了需要本地主机上的 ssl 的功能 https developer
  • 在 Windows 上部署 Meteor

    我觉得很奇怪的是 没有关于如何将自己的 Meteor Web 应用程序部署到自己的 Windows 服务器上的详细分步说明 或者也许我只是无法使用谷歌找到这样的解释 在很多页面上 甚至在关于 SO 的一些问题上 我发现人们只是简单地说 bu

随机推荐

  • 在 iOS 上估计到 iBeacon 的距离

    我正在尝试估计从 iOS 设备到 iBeacon 的距离 我知道距离估计不是非常准确 而且我也知道这个公式 https electronics stackexchange com questions 83354 calculate dist
  • 我的数据触发绑定有什么问题?

    我创建了一个附加属性来扩展具有附加状态的 Button 类
  • HttpSession request.getSession(false)

    我有个问题 在我的servlet在 glassfish 中我称之为方法request getSession false 它应该return null 但相反 总是有一个session回 而且 如果我invalidate the sessio
  • docker构建发布插件出错

    你能帮我配置一下吗jenkins docker 构建发布插件 https wiki jenkins ci org display JENKINS Docker build publish Plugin 我已经为 docker repo 设置
  • ImageIO.read(getClass().getResourceAsStream (input==NULL) 出现错误?

    当我使用以下代码时 我不断收到此错误 try image ImageIO read getClass getResourceAsStream build classes javaproject Space gif catch IOExcep
  • int 变量的大小

    int的大小是如何决定的 int 的大小是否真的取决于处理器 对于 32 位机器 它是 32 位 对于 16 位机器 它是 16 在我的机器上 它显示为 32 位 尽管该机器安装了 64 位处理器和 64 位 Ubuntu 这取决于实施 C
  • 如何使用 Flutter 下载文件并将其存储在 Downloads 文件夹中

    我正在使用 Flutter 1 10 3 构建一个应用程序 但将图像下载到设备的下载文件夹时遇到困难 是否可以选择在不使用任何第三部分库的情况下执行此操作 添加一些必需的依赖项 我有一个仅适用于 android 的测试演示 请查阅file
  • Node.js 文档未定义

    为什么node js无法识别document GetElementById 它说 ReferenceError 文档未定义 我能做些什么 ReferenceError document is not defined at Object
  • 如何从 ISBN 号获取书名? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正计划为我的个人藏书创建一个小型网站 为了稍微自动化该过程 我想创建以下功能 该网站会询问我该书的 ISBN 号 然后自动获取书名并
  • 如何中止使用 ThreadPool.QueueUserWorkItem 创建的线程

    有没有办法中止使用 QueueUserWorkItem 创建的线程 或者也许我不需要 如果主应用程序退出会发生什么 从它创建的所有线程都会自动中止吗 你不需要中止它们 当您的应用程序退出时 NET 将终止 IsBackground true
  • ld-linux --验证退出代码

    检查 usr bin ldd 的源代码 我发现它使用 ld linux 来查找可执行文件的依赖项 尽管它首先使用 verify 参数调用 ld linux 然后 脚本根据 ld linux verify 调用的退出代码采取不同的行为 ld
  • HTML5画布,保存jpeg blob并从blob恢复到画布

    我有一块画布 mycanvas其中包含图像 我想从该图像创建一个斑点 最好是 jpeg 格式 这是我创建 blob 的方法 document getElementById mycanvas toDataURL image jpeg repl
  • 比较数组与 jQuery [重复]

    这个问题在这里已经有答案了 可能的重复 javascript中数组交集的最简单代码 https stackoverflow com questions 1885557 simplest code for array intersection
  • 检查 TCP 端口是否可用(未侦听或连接)

    我使用以下代码来检查端口是否可用 bool ClassA CheckPortTCP short int dwPort char ipAddressStr struct sockaddr in client int sock client s
  • 在 C# 中调用 google Url Shortener API

    我想打电话给谷歌网址缩短API http code google com apis urlshortener v1 getting started html从我的 C 控制台应用程序中 我尝试实现的请求是 POST https www go
  • Firestore - 查询时如何在字段上应用“字符串包含”条件?

    Collection Post postId post 124 title World population 2020 如何编写一个查询 返回 标题 字段中包含字符串 世界人口 的帖子 Firestore 不支持此级别的查询 看全文检索 h
  • 从 iOS 应用程序检测附近的移动设备

    是否可以创建一个 iOS 应用程序来扫描附近的移动设备 例如 iPhone Android iPad 等 而无需在附近的移动设备上运行任何自定义应用程序 我尝试过像这样使用 CoreBluetooth 在我的 iPhone 6 上运行 se
  • 如何创建数据类型不是 EMF 类的 EAttribute?

    使用 EMF 我想定义一个属性 其数据类型 EType 在我的 EMF 模型外部 也就是说 我想要的类型是一个普通的手工编码的 Java 类 它不是我的 EMF 模型的一部分 使用AnySimpleType是最后的手段 与使用泛型相比 我想
  • 从一个线程跟踪另一个线程

    进行实验ptrace 系统调用 我试图跟踪同一进程的另一个线程 根据手册页 跟踪器和被跟踪者都是特定的线程 而不是进程 所以我看不出它不应该工作的原因 到目前为止 我已经尝试了以下方法 use PTRACE TRACEME来自clone d
  • 读取会话变量而不使上下文无效

    有没有办法在会话变量发生变化时读取会话变量而无需重新渲染模板 场景 我使用 jQuery 动态更改元素的样式 但是当创建新元素时 我想设置其默认样式 我知道在渲染元素时我可以调用相同的 jQuery 命令 Example