2015-01-27 2 views
1

Я пробовал много версий и просто не знаю ответа. Я просмотрел документацию, но не знаю достаточно, чтобы понять ее. Я пытаюсь войти на сайт с помощью синтаксиса. я могу заставить пользователя войти в систему, но не может хранить текущие данные пользователя. Как только вы вернетесь, пользователь снова войдет в систему. Я знаю, что вы можете использовать текущего пользователя для этого, но я просто не могу заставить его работать.currentuser in parse.com [javascript]

$(function() { 

Parse.$ = jQuery; 

// Replace this line with the one on your Quickstart Guide Page 
Parse.initialize("parseID", 
        "javascriptID"); 
    init(); 
    }); 
function init() 
{ 
currentUser = Parse.User.current(); 
loginStatus(); 
} // init 

function loginStatus() 
{ 

// var currentUser = Parse.User.current(); 
     if (currentUser) { 
    // do stuff with the user 
    new blogs(); 
    } else { 
// show the signup or login page 
    new LoginView(); 
//  } 

LoginView = Parse.View.extend({ 
     template: Handlebars.compile($('#login-tpl').html()), 
     events: { 
      'submit .form-signin': 'login' 
     }, 
     login: function(e) { 

      // Prevent Default Submit Event 
      e.preventDefault(); 

      // Get data from the form and put them into variables 
      var data = $(e.target).serializeArray(), 
       username = data[0].value, 
       password = data[1].value; 

      // Call Parse Login function with those variables 
      Parse.User.logIn(username, password, { 
       // If the username and password matches 
       success: function() { 
        blogs(); 
       }, 
       // If there is an error 
       error: function(user, error) { 
        console.log(error); 
       } 
      }); 
     }, 
     render: function(){ 
      this.$el.html(this.template()); 
     } 
    }); 

function blogs() { 

    // var user = Parse.User.current(); 


      var Blog = Parse.Object.extend("Post"); 
    var Blogs = Parse.Collection.extend({ 
    model: Blog, 
    query: (new Parse.Query(Blog)).equalTo("author",  Parse.User.current()) 
}); 
    var BlogsView = Parse.View.extend({ 
template: Handlebars.compile($('#blogs-tpl').html()), 
render: function(){ 
    var collection = { blog: this.collection.toJSON() }; 
    this.$el.html(this.template(collection)); 
    } 
}); 

var blogs = new Blogs(); 

blogs.fetch({ 
success: function(blogs) { 
var blogsView = new BlogsView({ collection: blogs }); 
blogsView.render(); 
$('.main-container').html(blogsView.el); 
} 


}) 


}; 



    // Render login view on page 
// var loginView = new LoginView(); 
// loginView.render(); 
// $('.main-container').html(loginView.el); 

ответ

2

Попробуйте сделать переменную currentUser глобальной переменной. Значение переменной currentUser в настоящее время застревает в пределах функции init(). Когда вы перейдете к функции loginStatus(), переменная currentUser будет сброшена.

Попробуйте создать экземпляр переменной перед тем, как данный код будет выглядеть примерно так.

//instantiate on the global scope 
var currentUser; 

$(function() { 
    Parse.$ = jQuery; 

    // Replace this line with the one on your Quickstart Guide Page 
    Parse.initialize("parseID", "javascriptID"); 
    loginStatus(); 
}); 

function loginStatus() { 
    currentUser = Parse.User.current(); 
     if(currentUser){ 
      newBlogs(); 
     }else{ 
      new LoginView(); 
     } 
} 
.... 
+0

спасибо! знал, что это что-то маленькое. – ClayD

+0

Нет проблем. Это, безусловно, мелочи, которые достанутся вам! – cgauss

Смежные вопросы