如果需要舊的行爲是在https://github.com/avital/meteor-ui-new-rendered-callback官方例子中解釋並存在兩種不同的解決方案,無論哪個最適合自己
舊行爲:
的HTML:
<body>
{{> list}}
</body>
<template name="list">
{{#each items}}
{{name}}
{{/each}}
</template>
的JavaScript:
Items = new Meteor.Collection("items", {connection: null});
Template.list.items = function() {
return Items.find();
};
var renderCount = 1;
var logRender = function() {
console.log("rendered #" + renderCount);
renderCount++;
};
Template.list.rendered = function() {
logRender();
};
setInterval(function() {
Items.insert({name: Random.choice(["one", "two", "three"])});
}, 1000);
解決方案1:
在HTML:
<body>
{{> list}}
</body>
<template name="list">
{{#each items}}
{{name}}
{{/each}}
</template>
的JavaScript:
Items = new Meteor.Collection("items", {connection: null});
Template.list.items = function() {
return Items.find();
};
var renderCount = 1;
var logRender = function() {
console.log("rendered #" + renderCount);
renderCount++;
};
Template.list.rendered = function() {
logRender();
};
Template.list.name = function() {
logRender();
return this.name;
};
setInterval(function() {
Items.insert({name: Random.choice(["one", "two", "three"])});
}, 1000);
解決方案2:
的HTML:
<body>
{{> list}}
</body>
<template name="list">
{{#each items}}
{{> justName}}
{{/each}}
</template>
<template name="justName">
{{name}}
</template>
的JavaScript:
Items = new Meteor.Collection("items", {connection: null});
Template.list.items = function() {
return Items.find();
};
var renderCount = 1;
var logRender = function() {
console.log("rendered #" + renderCount);
renderCount++;
};
Template.list.rendered = function() {
logRender();
};
Template.justName.rendered = function() {
logRender();
};
setInterval(function() {
Items.insert({name: Random.choice(["one", "two", "three"])});
}, 1000);