流星> Accounts.createUser在每个浏览器上重新呈现页面

时间:2013-12-17 17:43:26

标签: facebook meteor

我得到了一些我不了解的关于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');
    }
});

1 个答案:

答案 0 :(得分:1)

该问题可能与您的模板HTML有关。当模板的一部分需要重新渲染时,Meteor会重新渲染整个模板。尝试将您的登录HTML放在{{#isolate}}...{{/isolate}}块中,或将其设为子模板。