2015-12-18 2 views
-1

У меня есть небольшое приложение, в котором я использую синтаксический анализатор как бэкэнд.Parse core cordova ionic global variable

$scope.getPeople = function(params) { 
    var PeopleObject = Parse.Object.extend("User"); 
    var query = new Parse.Query(PeopleObject); 
    if(params !== undefined) { 
     if(params.id !== undefined) { 
      query.equalTo("objectId", params.id); 
     } 

    } 
    query.find({ 
     success: function(results) { 
      //alert("Successfully retrieved " + results.length + " people!"); 
      for (var i = 0; i < results.length; i++) { 
       var object = results[i]; 
        $scope.admin=object.get("admin"); 
        $scope.uid=object.id; 

      } 
     }, 
     error: function(error) { 
      alert("Error: " + error.code + " " + error.message); 
     } 
    }); 

}; 

Проблема в том, что мне нужно, чтобы получить $scope.admin и $scope.uid вне функции. У меня есть другая функция, называемая getlogin(), где я звоню $scope.getPeople() Мне нужны обе переменные в getlogin() тоже .. если я добавлю возврат внутри функции успеха getPeople(), он возвращает undefined. Мне нужно что-то, чтобы я мог получить обе переменные, возвращаемые функцией.

ответ

0

Если вы хотите получить значения после вызова $scope.getPeople(), вы должны обернуть внутренний код в объект, похожий на обещание, и разрешить этот объект, если у вас есть два значения. В вызывающем местоположении вы можете получить доступ к значениям путем цепочки .then() после вызова этой функции.

Для, например, что-то вроде:

$scope.getPeople = function(params) { 
    var deferred = $q.defer(); 

    var PeopleObject = Parse.Object.extend("User"); 
    var query = new Parse.Query(PeopleObject); 
    if(params !== undefined) { 
     if(params.id !== undefined) { 
      query.equalTo("objectId", params.id); 
     } 

    } 
    query.find({ 
     success: function(results) { 
      //alert("Successfully retrieved " + results.length + " people!"); 
      for (var i = 0; i < results.length; i++) { 
       var object = results[i]; 
        $scope.admin=object.get("admin"); 
        $scope.uid=object.id; 

        defer.resolve({admin: object.get("admin"), uid: object.id}) 
      } 
     }, 
     error: function(error) { 
      alert("Error: " + error.code + " " + error.message); 
     } 
    }); 

    return deferred.promise; 
}; 

Примечание: Это должно решить вашу проблему, но вы можете использовать метод .first() на запросе вместо метода .find(), если вы только что необходимо получить одно значение.

0

Вы пробовали LocalStorage или SessionStorage?

SessionStorage сохраняет значение при навигации на Сайте (по страницам в одном URL)

LocalStorage сохраняется значение, пока вы не очистите его или чистый браузер.

Пример:

localStorage.setItem('myKey', myObj); 

, чтобы получить:

var item = localStorage.getItem('myKey'); 

НТН Габриэль