- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Meteor 应用程序中,我有这个 rendered
函数,它需要访问特定的集合。假设我有一个 ToDos 集合
ToDos = new Meteor.Collection('todos');
if (Meteor.isClient) {
Meteor.subscribe('todos');
}
if (Meteor.isServer) {
Meteor.startup(function () {
Meteor.publish('todos', function () {
return ToDos.find({});
});
});
}
现在在渲染函数中我想做这样的事情
Template.todos.rendered = function () {
var todo = ToDos.findOne({...});
if (todo) {
$('[datepicker]').datepicker('setDate', todo.date);
}
}
我遇到的问题是,当 rendered
被调用时,todo
是 undefined
并且这个函数只被调用一次。有解决办法吗? Deps.autorun
有帮助吗?如果是,怎么办?
另一方面,如果我只能监听ToDos
,我就可以在那里更新日期选择器!
最佳答案
是的,这是 Meteor 中一个潜在的恼人问题。本质上,同时处理您的 Meteor.subscribe
调用返回有一个 ready
方法会告诉你集合是否准备好,通常是你的 rendered
回调将在它返回时运行 true
,所以在这种情况下它不是很有用。您可以使用 onReady
在某些情况下,在您的订阅调用中回调,如果您知道模板实例存在并在 rendered
中做任何您可以做的事情,甚至可以从其他地方插入模板的数据上下文。回调,但这可能是处理您提出的问题的一种非常困惑的方式(因为如果在 DOM 呈现之前集合已经准备好了,它就会崩溃) .
解决方案:通常情况下,iron router是这里最好的解决方案,因为它允许每条路线都有一个 waitOn
回调,您可以使用它来指定哪些订阅需要 ready()
在页面开始呈现之前(尽管您可以使用 ready
回调等待任何事情,而不仅仅是订阅)。这样,您始终知道您的 Collection.find
将在您的 rendered
时返回您期望的内容回调第一次运行。
关于javascript - Meteor:在 'rendered' 函数中加载集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22717604/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!