gpt4 book ai didi

javascript - Meteor #each 和 session 数据

转载 作者:行者123 更新时间:2023-11-29 21:36:04 25 4
gpt4 key购买 nike

我有一个基于异步信息的模板,所以我使用 Session 数据以便在数据到达时响应式地呈现 View 。像这样的东西:

item.html:

<template name="item">
{{#with item}}
{{itemInformation.name}}
{{/with}}
</template>

item.js

Template.item.created = function () {
getItemData(this.data.item.id, function(data) {
Session.set("itemInformation", data);
});
}

Template.item.helpers({
itemInformation: function() {
return Session.get("itemInformation");
}
});

如果我有一个项目模板处于事件状态,这种方法似乎很有效。但是,如果我在 #each 循环中使用这种方法,我就会在 session 数据上发生冲突。

  1. 是否有我可以使用的“本地”Session 数据?
  2. 当基于 #each 循环中的异步数据时,重新渲染 View 的正确方法是什么?

最佳答案

  1. 您可以在 onCreated 模板回调 (self.localSession = new ReactiveDict ()) 中创建一个 ReactiveDict(https://atmospherejs.com/meteor/reactive-dict - Session 在其实现中实际使用它),并使用它代替 Session (self.localSession.set('itemInformation', data))。您可以通过以下方式在模板助手中访问它:Template.instance().localSession.get('itemInformation')

如果您只想将一个项目存储在字典中,您也可以以相同的方式只使用单个 ReactiveVar ( https://atmospherejs.com/meteor/reactive-var )。

  1. 就像您注意到的那样,您需要在一些 react 源中设置异步内容,您可以使用我上面描述的结构。

您的代码:

Template.item.created = function () {
var self = this;
self.localSession = new ReactiveDict ();
getItemData(self.data.item.id}, function(data) {
self.localSession.set("itemInformation", data);
});
}

Template.item.helpers({
itemInformation: function() {
return Template.instance().localSession.get("itemInformation");
}
});

关于javascript - Meteor #each 和 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34851993/

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