Обновление сложного пользовательского объекта REST Appcelerator

Все,

TL: DR

  • Appcelerator Cloud Services
  • ОСТАЛЬНОЕ
  • Пользовательский объект с массивами
  • Обновить свойство в массиве, используя атомарный оператор $ inc

Подробности:

Я использую AngularJS для доступа к облачным сервисам Appcelerator с помощью REST. У меня есть сложный пользовательский объект (см. Ссылки Gist ниже). Моя пользовательская коллекция будет содержать один из этих объектов на событие. У каждого события есть команды, и у каждой команды есть участники. Каждая команда и участник соревнуются в отдельных этапах, а зрители голосуют за результативность команды и участника. Я хочу обновить результаты команд и участников, но не могу понять, как мне нужно установить значение полей для обновления результатов.

Я создал суть со всеми своими файлами, которые связаны с этой проблемой. Если кто-нибудь может оказать помощь, я буду признателен.

2 ответа

Решение

Я сдался и изменил объект партитуры на плоский документ. Теперь у меня есть документ оценки для каждого события / команды / сегмента или события / участника / сегмента. Это должно позволить легко обновлять свойство оценки, поскольку в документе оценки теперь нет хэшей или массивов.

демонстрация

Пусть весь массив у вас будет называться 'arr';

var arr= {....};

Давайте разберемся с сегментами, расположенными 3-м ключом сверху. Тогда в вашем HTML это будет выглядеть примерно так:

    <table>
        <tr ng-repeat="segment in arr[0].segments">
            <td ng-bind="segment.name"></td>
            <td>
                <input type="text" ng-model="segment.name">
            </td>
            <td ng-bind="segment.score"></td>
            <td style='cursor:pointer;' ng-click="segment.score = segment.score+1">Add Score</td>
        </tr>
    </table>

И ваш контроллер будет что-то вроде:

var TodoCtrl = function ($scope) {
    $scope.arr = arr;
}

Это просто массив объектов, поэтому думайте о нем как о массиве строк или чисел, но со свойствами. Например, если вы хотите вывести всех участников во второй массив, вы будете делать что-то вроде

arr[1].contestants.forEach(function(element, index, object){
    console.log(element.id, element.name); // name would start with Gene Collier
    element.segments.forEach(function(_el){
            console.log('name', _el.name, 'score', _el.score);
    });
}

Надеюсь, это поможет.

Другие вопросы по тегам