Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng通过对象中的对象重复循环_Javascript_Angularjs_Loops_Angularjs Ng Repeat_Ng Repeat - Fatal编程技术网

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);
        }
    };
});