Javascript ng通过对象中的对象重复循环
我不知道如何循环使用这个数据模型Javascript ng通过对象中的对象重复循环,javascript,angularjs,loops,angularjs-ng-repeat,ng-repeat,Javascript,Angularjs,Loops,Angularjs Ng Repeat,Ng Repeat,我不知道如何循环使用这个数据模型 $scope.object = [ {person1: {name: 'jon', height: 100}} , {person2: {name: 'joe', height: 200}}, {person3: {name: 'lisa', height: 150}}] 我试着这样重复 <tr ng-repeat = "person in object[0]"> <td>{{person.name}}</td> &
$scope.object = [ {person1: {name: 'jon', height: 100}} , {person2: {name: 'joe', height: 200}}, {person3: {name: 'lisa', height: 150}}]
我试着这样重复
<tr ng-repeat = "person in object[0]">
<td>{{person.name}}</td>
</tr>
{{person.name}
这当然只会显示“jon”。如何获取所有人(x)的姓名?我可以给他们全部命名为person,而不是person1,person2,但我的项目数据模型不允许这样。你能做什么
谢谢把对象数据中缺少的大括号放在一边,你可以做一些愚蠢的事情,比如
<tr ng-repeat="person in object">
<td ng-repeat="keys in person">
{{keys.name}}
</td>
</tr>
或者删除数组括号并将其视为哈希表:
$scope.object = {
person1: {name:'Bob'},
person2: {name:'Ted'}
};
对于这两种数据结构中的任何一种,您的HTML模板都是相同的:
<tr ng-repeat="person in object">
<td>{{person.name}}</td>
</tr>
{{person.name}
现在,您正试图将其构造为数组和散列,这没有任何好处,只会使访问数据变得更加笨拙。如果您的模型返回person1、person2、person3等格式的数据。。 这是一个直接的答案 下面是HTML
<div ng-controller="MyCtrl">
<div ng-repeat = "person in object">
<div make-json> </div>
</div>
</div>
希望这对你有用。谢谢。您是否试图通过编写指令来实现这一目标?您应该首先转换模型,然后将其发送到数据不一致的范围。你能发布正确的对象数据吗?@GruffBunny这不起作用,因为“对象中的人”只会返回“{person1:{..}}”,等等,因为对象数组中的每个索引都是一个对象。@Raghav你说数据不一致是什么意思?@Garuuk:你拥有的不是有效的JavaScript。贴出真实的结构。你说得对。现在我有点失控了。Ganna试试双ng重复法你不能改变指令吗?你所要做的就是把方括号变成卷发…它在后端,我可以而且最终会。但就目前而言,知道一种解决方法很好。感谢您@DanielBeckCareful@code>elm.text()——直接写入DOM意味着失去双向数据绑定。(如果您确信基础数据不会更改,有时出于性能原因确实需要这样做,但默认情况下使用这种模式可能不是一个好习惯……)
<div ng-controller="MyCtrl">
<div ng-repeat = "person in object">
<div make-json> </div>
</div>
</div>
var app = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.object = [{
person1: {
name: 'jon',
height: 100
}
}, {
person2: {
name: 'joe',
height: 200
}
}, {
person3: {
name: 'lisa',
height: 150
}
}];
}
app.directive('makeJson', function() {
return {
restrict: 'AEC',
link: function(scope, elm, attrs) {
var formattedText = "person";
formattedText = formattedText + (parseInt(scope.$index) + 1);
elm.text(scope.person[formattedText.toString()].name);
}
};
});