渲染的模板在meteor JS中无法正常工作

时间:2016-04-30 06:25:51

标签: meteor

呈现的模板无法正常工作

当用户成功登录系统时,我重定向到个人资料页面,时间数据未获取,但如果我访问另一个页面并返回到个人资料页面,那时工作正常。当我重新加载页面时,它也无法正常工作

这是代码

Template.profile.rendered = function(){
    
    var user_email  = {};
    user_email.mail = Session.get('email');
    
    var imgName  = Session.get('image');
    Meteor.call("imgSend",imgName,function(error, result){
        $('.user_profile_image').attr("src",result)
    });
    
    Meteor.call("getLinkMeta",user_email,function(error, result){
        
        var link_all_info = [];       
        var walldata      = [];
        var total         = result.length;
        var processed     = 0;
        
        var t =  result.forEach(function (entry){
			
              var link_info     = {};
              link_info.link_id = entry._id;                 

              Meteor.call("getCommentList",link_info, function (error, res){
				  
                if(error){
                    console.log("e");
                }else{
                    entry.comments = res;            
                }
                processed++
                if(processed == total){                                   
                   //walldata=result;
                }
             });                           
        });
        Template.profile.walldata = function(){  
                 return result;
        };    
			//return result;
  });
}

Router.route('profile', {
  path: '/profile',
  data: function() {
    
    /* Meteor.subscribe("Users");
       Meteor.subscribe("Link");
       Meteor.subscribe("Linkfav");
       Meteor.subscribe("LinkLike");
       Meteor.subscribe("LinkComment"); */ 
    
     $("body").removeClass('home');
     this.render('profile');
    
      setTimeout(function(){ 

        $('#username').html(Session.get('first_name'));
        $('#profile_username').html(Session.get('first_name'));
        $('#setting_name').val(Session.get('first_name'));
        $('#setting_username').val(Session.get('first_name'));
        $('#setting_email').val(Session.get('email'));
        $('#user_id').val(Session.get('id'));

        $('.setting_day').val(Session.get('day'));
        $('.setting_month').val(Session.get('month'));
        $('.setting_year').val(Session.get('year'));

        if(Session.get('image')!= ''){
          $('.user_profile_image').attr("src",Session.get('image'));
        }
        
        if(Session.get('gender') == 0){
            $('#user_gender').html('Male');
        }else{
            $('#user_gender').html('Female');
        }
            $('#day').html(Session.get('day'));
            $('#month').html(Session.get('month'));
            $('#year').html(Session.get('year'));
      },100);
    
  },onBeforeAction:function(){
    
    if(Session.get('email')){
        this.next();
    }else {
        //this.next();
        this.redirect('/');
    }
  }
});

1 个答案:

答案 0 :(得分:0)

刷新/重新加载页面时,会话值未定义。您可以使用meteor.user()获取当前用户的电子邮件。你只需要像这样替换你的session.get('email')。

var user_email  = {};
user_email.mail = Meteor.user().emails[0].address;

我希望这就是你要找的东西。