所有
TL:DR
详细说明:
我正在使用AngularJS使用REST访问Appcelerator云服务。我有一个复杂的自定义对象(请参阅下面的Gist链接)。我的自定义集合将在每个事件中包含其中一个对象。每个活动都有团队,每个团队都有参赛者。每个团队和参赛者在活动片段中竞争,观众对团队和参赛者的表现进行投票。我想更新团队和参赛者的分数,但我无法弄清楚如何设置字段值以更新分数。
我已经创建了一个包含此问题所涉及的所有文件的要点。如果有人能提供一些帮助,我会很感激。
答案 0 :(得分:0)
让整个数组被称为'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属性,因为分数文档中现在没有哈希或数组。