【发布时间】:2014-05-09 09:37:59
【问题描述】:
自从升级到 0.8.0 后,我遇到了一个问题。 渲染的模板不再被触发(第一次除外)。
我遵循以下建议: https://github.com/avital/meteor-ui-new-rendered-callback/blob/master/new2/client/each.js
这并没有帮助,所以我最终制作了这段代码(通过修改 new2 示例)。
主要区别在于更新是由 Session 变量更改而不是 DB 更改触发的。
这完美地说明了这个问题,因为在这个例子中,rendered 只触发了两次:
client/each.js
Template.list.items = function () {
return (Session.get('items') || 'None')
};
var renderCount = 1;
var logRender = function () {
console.log("rendered #" + renderCount);
renderCount++;
};
Template.list.rendered = function () {
logRender();
};
Template.justName.rendered = function () {
logRender();
};
setInterval(function () {
Session.set('items', {name: Random.choice(["one", "two", "three"])});
}, 1000);
client/each.html
<body>
{{> list}}
</body>
<template name="list">
{{#with items}}
{{> justName}}
{{/with}}
</template>
<template name="justName">
{{name}}
</template>
如何在 Session.set 触发内容更新时正确触发 Template.justName.rendered 回调?
谢谢,
【问题讨论】:
-
我确实有同样的问题,这看起来可能是设计更改。还没找到解决办法。
标签: javascript meteor spacebars