用户登录后流星重新渲染模板
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
}
})
}
});
}
正如预期的那样,我得到了朋友数组里面有对象(表示为朋友)。在用户单击链接的某个时候,我想向用户显示他的朋友列表。所以我得到了这个 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 */
}
相关文章:
- 流星:未创建与未渲染
- 铁流星's路线没有't激发模板的渲染事件
- 如何强制对模态进行新渲染
- 收集订阅者的流星事件,用于在 mongodb 中新插入文档
- 在流星星系的网络拍摄pdf中渲染图像
- 流星,渲染标记
- 如何在渲染新视图之前关闭所有事件
- 扩展成员应用程序,包括新的路线,现在没有任何渲染
- React选择性地不将新道具传递给渲染对象
- 流星:显示数组数据,因为表在添加新列时给出了重复值
- ajax重新渲染时获得新值
- 流星:强制重新渲染嵌套模板
- 如何防止流星重新渲染模板
- 为什么我的流星模板没有被动渲染
- 渲染流星模板时执行的茉莉花测试方法
- 流星 + 铁路由器:在页面渲染后渲染
- Reactive Template在搜索后重新渲染流星js
- 让流星重新渲染“;新文档”;
- 关注标签触发模糊事件后新渲染的文本输入
- 完整日历不能正确渲染流星