簡體   English   中英

用戶登錄后流星重新渲染模板

[英]Meteor re-render template after user login

好的,所以當用戶使用Facebook登錄時,我會使用Facebook API圖,這樣獲得用戶朋友列表+朋友圖片:

Template.user_loggedout.events({
    "click #fb": function (e, tmp) {
        Meteor.loginWithFacebook({
            requestPermissions: ['user_likes',
                'friends_about_me',
                'user_birthday',
                'email',
                'user_location',
                'user_work_history',
                'read_friendlists',
                'friends_groups',
                'user_groups']
        }, function (err) {
            if (err) {
                console.log("error when login with facebook " + err);
            } else {
                FB.api('/' + Meteor.user().services.facebook.id + '/friends', { fields: 'name,picture' }, function (response) {
                    if (response && response.data) {
                        friends = response.data
                    }
                })
            }
        });
    }

和預期的一樣,我在里面得到了friends數組,有一些對象(表示為friends)。 在某個時候,當用戶單擊鏈接時,我想向用戶顯示他的朋友列表。 所以我得到了這個HTML:

Template.add_friends.helpers({
    friends_list: friends
});

template name="add_friends">
    <div class="friends_Page">
           {{#each friends_list}}
        <li>{{name}}</li>
        {{/each}}
    </div>
</template>

問題是在啟動應用程序后以及用戶使用Facebook單擊登錄按鈕時,friends對象會更新。 所以當我從facebook graph api獲得回調時如何重新渲染? 我不想將朋友存儲在數據庫中(由於facebook,它已經可用)

更改數據時強制重繪的最自然方法是使用對該數據的依賴性。

var friends = [];
var friends_dep = new Deps.Dependency();

Template.myTemplate.friends_list = function() {
    friends_dep.depend();    /* Causes the helper to rerun when data changes */
    return friends;
};

...

function callback() {
    ...
    friends = response.data;
    friends_dep.changed();    /* Call this after you set the new data */
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM