gpt4 book ai didi

meteor - 在不使上下文无效的情况下读取 session 变量

转载 作者:行者123 更新时间:2023-12-02 22:10:42 25 4
gpt4 key购买 nike

有没有一种方法可以从 Session 变量中读取而无需在模板更改时重新呈现模板?

场景:

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

示例:

<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")});
}
};

我希望添加的每个新图像都将高度存储在 session 变量中,而无需重新呈现 img。我能想到的所有解决方案都像是 hack。

最佳答案

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

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

然后,代替 Session.get('key-name'),执行:解析(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); });
};

2016 年 2 月 15 日更新Meter 目前已被弃用,但它仍然有效。使用 Tracker 代替:

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

关于meteor - 在不使上下文无效的情况下读取 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15357868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com