我得到了一些我不了解的关于Accounts.createUser()的内容。当新用户在我的应用程序上注册时(或者当他键入已经使用过的电子邮件并收到警告提示时),它会导致每个浏览器重新呈现仪表板页面(也可能是其他页面上的所有浏览器)。事情是,我们可以看到仪表板被重新渲染,因为我看到facebook按钮重新出现,这要归功于下面的代码。)
Template.dashboard.rendered = function() {
FB.XFBML.parse(document.getElementById('facebookButton')); // render facebook like button
};
我花了很多时间弄清楚为什么模板会重新渲染。我希望有人有个主意。当我们使用Accounts.createUser()时,它是Meteor的核心功能吗?
// on the client
Accounts.createUser({email: email, password: password}, function(err) {
if (err) {
if (err.message === 'Email already exists. [403]') {
Session.set('alert', {type: 'error', message: 'We\'re sorry but this email is already used.'});
} else {
Session.set('alert', {type: 'error', message: 'We\'re sorry but something went wrong.'});
}
rumble(signUpForm);
} else {
Session.set('alert', {type: 'success', message: 'Congrats! You\'re now a Famecoiner!'});
unblockForm(signUpForm);
Router.go('welcome');
}
});
答案 0 :(得分:1)
该问题可能与您的模板HTML有关。当模板的一部分需要重新渲染时,Meteor会重新渲染整个模板。尝试将您的登录HTML放在{{#isolate}}...{{/isolate}}
块中,或将其设为子模板。