Appcelerator REST复杂自定义对象更新

时间:2015-01-06 01:23:12

标签: angularjs rest appcelerator-acs

所有

TL:DR

  • Appcelerator云服务
  • REST
  • 带数组的自定义对象
  • 使用$ inc atomic increment operator
  • 更新数组中的属性

详细说明:

我正在使用AngularJS使用REST访问Appcelerator云服务。我有一个复杂的自定义对象(请参阅下面的Gist链接)。我的自定义集合将在每个事件中包含其中一个对象。每个活动都有团队,每个团队都有参赛者。每个团队和参赛者在活动片段中竞争,观众对团队和参赛者的表现进行投票。我想更新团队和参赛者的分数,但我无法弄清楚如何设置字段值以更新分数。

我已经创建了一个包含此问题所涉及的所有文件的要点。如果有人能提供一些帮助,我会很感激。

2 个答案:

答案 0 :(得分:0)

Demo

让整个数组被称为'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);
    });
}

我希望这会有所帮助。

答案 1 :(得分:0)

我放弃并将得分对象更改为平面文档。我现在每个活动/团队/细分或活动/参赛者/细分都有一个得分文档。这应该允许轻松更新score属性,因为分数文档中现在没有哈希或数组。