【发布时间】:2013-12-18 04:23:46
【问题描述】:
我对 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');
}
});
【问题讨论】: