java script - с использованием запроса parse.com с угловым ng-repeat

Я делаю запрос с parse.com и получаю массив из 2 объектов. Теперь я хочу использовать ng-reapet('phone in phone') , поэтому мне нужно преобразовать его в json. Мне не удалось это сделать. по какой-то причине он не видит результат как json.

  var Project = Parse.Object.extend("Project");
  var query = new Parse.Query(Project);
  query.find({
      success: function (results) {
          var allProjects = [];
          for (var i = 0; i < results.length; i++) {
              allProjects.push(results[i].toJSON());
          }
          $scope.phones = allProjects;
          //i also tried this :               $scope.phones = JSON.stringify(allProjects);
      },
      error: function (error) {
          alert("Error: " + error.code + " " + error.message);
      }
  });

Спасибо


person user2837319    schedule 04.04.2014    source источник


Ответы (3)


Не уверен, что вы уже поняли это, но у меня была похожая проблема, и я нашел ваш пост. Я не уверен, как выглядит ваш HTML, но в итоге я использовал метод get Parse.Object в моем ретрансляторе следующим образом:

<ul ng-repeat="list in lists">
    <li>
        <a ng-href="#/lists/{{list.id}}">{{list.get('title')}}</a>
    </li>
</ul>

Я также изучил использование промисов, чтобы обратный вызов успеха запроса Parse фактически обновлял представление, когда вы устанавливаете $scope.phones в результат запроса. Мой код похож на ваш, но мой объект - это список, а не проект. Вот как выглядит мой:

// Define your Parse object
var List = Parse.Object.extend('List');

// Define a function that runs your Parse query. Use an angular promise so that
// the view updates when you set your $scope var equal to the query result
function getList() {
    var deferred = $q.defer();
    var query = new Parse.Query(List);

    query.find({
        success: function(results) {
            deferred.resolve(results);
        },
        error: function(error) {
            deferred.reject(error.message);
        }
    });

    return deferred.promise;
}

// Call the getList function on load
var promise = getLists();
promise.then(function(lists) {
    $scope.lists = lists;
});

В общем, дело не в том, что Angular неправильно видит ответ. Вам не нужно каким-либо образом изменять результат Parse. Просто вам нужно использовать метод get Parse.Object, как если бы вы обращались к свойствам объекта, и убедиться, что вы используете обещание, чтобы Angular обращался к результату вашего запроса, как и должно быть в представлении.

person Kelly Kiernan    schedule 15.07.2014

Не используйте функцию .get для Parse в вашем угловом коде, она больше не работает, плюс не рекомендуется изменять ваш угловой код, потому что ваш объект трехуровневый вложен и нуждается в методе get.

Правильный способ - расширить объект, а затем сопоставить значения с любыми элементами, которые вам нужны в этом классе. Затем вы можете нормально привязываться к ng-repeat без изменения своего html-кода специально для Parse.

var Game = Parse.Object.extend("Game"); 
var query = new Parse.Query(Game);
query.find({
success: function(results) {
  $scope.$apply(function() {
  $scope.games = results.map(function(obj) {
    return {points: obj.get("points"), gameDate: obj.get("gameDate"),  parseObject: obj};
  });
});
},

error: function(error) {
  console.log(error);
} 
person Abs    schedule 25.09.2015
comment
parseObject отсутствует. Есть идеи, как это исправить? - person lito; 12.11.2015

Возможно, есть лучшие инструменты , фреймворки.

строка 188 - выборка. Он автоматически загружает json для модели в коллекцию, определенную в строке 47.

Перебор записей в результате запроса на синтаксический анализ полностью автоматизирован в фреймворке, так что вы можете сэкономить кучу времени, изучив соответствующий фреймворк (т.е. магистраль). В backbone/parse вы фокусируетесь на бизнес-логике, а не на управлении сетевым вводом-выводом и структурами запросов.

«телефон в телефонах» из вашего вопроса может быть просто вложенной моделью или вложенной коллекцией, с которой IMO можно обрабатывать путем более сложных манипуляций с базовой базовой структурой.

person Robert Rowntree    schedule 04.04.2014